
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

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

{
  double dVar1;
  double dVar2;
  int iVar3;
  size_t sVar4;
  PixelChannelMap *pPVar5;
  _Image *p_Var6;
  bool bVar7;
  double dVar8;
  ushort value;
  Image *pIVar9;
  double dVar10;
  byte bVar11;
  byte bVar12;
  ushort uVar13;
  MagickBooleanType MVar14;
  int iVar15;
  char *pcVar16;
  size_t sVar17;
  uint uVar18;
  ClassType CVar19;
  uint uVar20;
  uint uVar21;
  StringInfo *string_info;
  int iVar22;
  Quantum *pQVar23;
  uchar *data;
  Image *pIVar24;
  ushort *puVar25;
  uint uVar26;
  MemoryInfo *memory_info;
  int iVar27;
  size_t sVar28;
  undefined2 *data_00;
  undefined2 *puVar29;
  char cVar30;
  byte bVar31;
  ushort uVar32;
  bool bVar33;
  char *pcVar34;
  size_t sVar35;
  undefined1 uVar36;
  char *pcVar37;
  ushort *puVar38;
  ushort *puVar39;
  uint uVar40;
  uint *puVar41;
  size_t __n;
  int iVar42;
  int in_GS_OFFSET;
  bool bVar43;
  bool bVar44;
  bool bVar45;
  byte bVar46;
  size_t sVar47;
  undefined2 uVar48;
  undefined4 uVar49;
  undefined8 local_184;
  byte local_17c;
  undefined1 uStack_17b;
  undefined2 uStack_17a;
  int iStack_178;
  size_t local_174;
  int local_170;
  char *local_168;
  char *local_164;
  int local_160;
  uint local_14c;
  int local_148;
  uint local_144;
  undefined8 local_134;
  char *local_128;
  MemoryInfo *local_124;
  uint local_10c;
  int local_108;
  uint local_104;
  int local_100;
  uint local_e4;
  BMPInfo bmp_info;
  
  bVar46 = 0;
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  if (image_info == (ImageInfo *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");
  }
  if (image_info->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,
                  "WriteBMPImage");
  }
  if (image == (Image *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");
  }
  if (image->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");
  }
  if (image->debug != MagickFalse) {
    LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);
  }
  if (exception == (ExceptionInfo *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");
  }
  if (exception->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"
                 );
  }
  MVar14 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);
  if (MVar14 == MagickFalse) {
LAB_001d3a3a:
    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail_local();
    }
    return MVar14;
  }
  iVar15 = LocaleCompare(image_info->magick,"BMP2");
  bVar12 = 2;
  if (iVar15 != 0) {
    iVar15 = LocaleCompare(image_info->magick,"BMP3");
    bVar12 = (iVar15 != 0) + 3;
  }
  pcVar16 = GetImageOption(image_info,"bmp:format");
  if (pcVar16 != (char *)0x0) {
    LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);
    iVar15 = LocaleCompare(pcVar16,"bmp2");
    bVar31 = 2;
    if (iVar15 != 0) {
      bVar31 = bVar12;
    }
    iVar15 = LocaleCompare(pcVar16,"bmp3");
    bVar11 = 3;
    if (iVar15 != 0) {
      bVar11 = bVar31;
    }
    iVar15 = LocaleCompare(pcVar16,"bmp4");
    bVar12 = 4;
    if (iVar15 != 0) {
      bVar12 = bVar11;
    }
  }
  sVar17 = GetImageListLength(image);
  local_10c = 0;
  local_108 = 0;
  uVar18 = image->colorspace - GRAYColorspace;
  if (uVar18 < 0x1f) goto LAB_001d1cae;
  do {
    TransformImageColorspace(image,sRGBColorspace,exception);
    do {
      puVar41 = &bmp_info.ba_offset;
      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {
        *puVar41 = 0;
        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;
      }
      if (bVar12 == 2) {
        bmp_info.file_size = 0x1a;
        uVar18 = 0x1a;
      }
      else {
        bmp_info.file_size = 0x36;
        uVar18 = 0x36;
      }
      bmp_info.red_mask = 0xff0000;
      bmp_info.green_mask = 0xff00;
      bmp_info.blue_mask = 0xff;
      bmp_info.alpha_mask = 0xff000000;
      CVar19 = image->storage_class;
      bmp_info.offset_bits = uVar18;
      if (CVar19 == PseudoClass) {
        uVar20 = image->colors;
        if (0x100 < uVar20) {
          SetImageStorageClass(image,DirectClass,exception);
          CVar19 = image->storage_class;
          goto LAB_001d0f25;
        }
LAB_001d0f31:
        if (uVar20 < 3) {
          bmp_info.bits_per_pixel = 1;
          if (image_info->compression == RLECompression) goto LAB_001d36c0;
LAB_001d0f54:
          local_17c = (byte)bmp_info.bits_per_pixel;
          local_144 = 1 << (local_17c & 0x1f);
          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);
        }
        else {
          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;
          if (image_info->compression != RLECompression) goto LAB_001d0f54;
LAB_001d36c0:
          local_144 = 0x100;
          bmp_info.bits_per_pixel = 8;
          local_17c = 8;
          uStack_17b = 0;
        }
        bmp_info.number_colors = local_144;
        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {
          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));
          bmp_info.offset_bits = bmp_info.file_size;
          uVar18 = bmp_info.file_size;
          if (bVar12 != 2) {
            bmp_info.file_size = bmp_info.file_size + local_144;
            bmp_info.offset_bits = bmp_info.file_size;
            uVar18 = bmp_info.file_size;
          }
        }
        else {
          SetImageStorageClass(image,DirectClass,exception);
          if (image->storage_class == DirectClass) goto LAB_001d3250;
        }
        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);
        iVar15 = 0;
      }
      else {
LAB_001d0f25:
        if (CVar19 != DirectClass) {
          uVar20 = image->colors;
          goto LAB_001d0f31;
        }
LAB_001d3250:
        bmp_info.number_colors = 0;
        pcVar16 = GetImageOption(image_info,"bmp:subtype");
        if (pcVar16 == (char *)0x0) {
          if (bVar12 == 4) {
            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;
LAB_001d3d56:
            bmp_info.compression = 3;
            bmp_info.bits_per_pixel = 0x20;
            local_144 = 0;
            local_17c = 0x20;
            uStack_17b = 0;
            uVar20 = 0x20;
            iVar15 = 0;
            uVar18 = bmp_info.file_size;
          }
          else {
LAB_001d3da8:
            uVar18 = bmp_info.file_size;
            bmp_info.compression = 0;
            bmp_info.bits_per_pixel = 0x18;
            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {
              pcVar16 = GetImageOption(image_info,"bmp3:alpha");
              MVar14 = IsStringTrue(pcVar16);
              if (MVar14 == MagickFalse) {
                uVar20 = 0x18;
                iVar15 = 0;
                local_17c = 0x18;
                uStack_17b = 0;
                local_144 = 0;
              }
              else {
                local_144 = 0;
                uVar20 = 0x20;
                bmp_info.bits_per_pixel = 0x20;
                local_17c = 0x20;
                uStack_17b = 0;
                iVar15 = 0;
              }
            }
            else {
LAB_001d3e67:
              bmp_info.compression = 0;
              bmp_info.bits_per_pixel = 0x18;
              local_144 = 0;
              uVar20 = 0x18;
              local_17c = 0x18;
              uStack_17b = 0;
              iVar15 = 0;
              uVar18 = bmp_info.file_size;
            }
          }
        }
        else {
          if (image->alpha_trait == UndefinedPixelTrait) {
            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);
            if (iVar15 == 0) {
              bmp_info.red_mask = 0x7c00;
              bmp_info.green_mask = 0x3e0;
              bmp_info.blue_mask = 0x1f;
              bmp_info.alpha_mask = 0;
              iVar15 = 1;
            }
            else {
              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);
              if (iVar15 != 0) {
                if (bVar12 == 4) goto LAB_001d3e67;
                goto LAB_001d3da8;
              }
              bmp_info.red_mask = 0xf800;
              bmp_info.green_mask = 0x7e0;
              bmp_info.blue_mask = 0x1f;
              bmp_info.alpha_mask = 0;
              iVar15 = 2;
            }
          }
          else {
            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);
            if (iVar15 == 0) {
              bmp_info.red_mask = 0xf00;
              bmp_info.green_mask = 0xf0;
              bmp_info.blue_mask = 0xf;
              bmp_info.alpha_mask = 0xf000;
              iVar15 = 3;
            }
            else {
              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);
              if (iVar15 != 0) {
                if (bVar12 == 4) goto LAB_001d3d56;
                goto LAB_001d3da8;
              }
              bmp_info.red_mask = 0x7c00;
              bmp_info.green_mask = 0x3e0;
              bmp_info.blue_mask = 0x1f;
              bmp_info.alpha_mask = 0x8000;
              iVar15 = 4;
            }
          }
          bmp_info.compression = 3;
          bmp_info.bits_per_pixel = 0x10;
          local_144 = 0;
          local_17c = 0x10;
          uStack_17b = 0;
          uVar20 = 0x10;
          uVar18 = bmp_info.file_size;
        }
      }
      bmp_info.ba_offset = 0;
      uVar20 = uVar20 * image->columns + 0x1f >> 5;
      uVar21 = uVar20 * 4;
      string_info = GetImageProfile(image,"icc");
      bVar43 = string_info != (StringInfo *)0x0;
      bVar7 = true;
      bVar44 = image->rendering_intent == UndefinedIntent;
      if (bVar44 && !bVar43) {
        bVar7 = image->gamma != 0.0;
      }
      if (bVar12 == 2) {
        bmp_info.size = 0xc;
      }
      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {
        bmp_info.size = 0x28;
        bVar12 = 3;
      }
      else {
        if (bVar44 && !bVar43) {
          bmp_info.size = 0x6c;
          iVar22 = 0x44;
        }
        else {
          bmp_info.size = 0x7c;
          iVar22 = 0x54;
        }
        uVar18 = uVar18 + iVar22;
        bVar12 = 4;
        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;
      }
      sVar28 = image->columns;
      bmp_info.planes = 1;
      bmp_info.x_pixels = 0xb6d;
      sVar35 = image->rows;
      bmp_info.y_pixels = 0xb6d;
      __n = uVar21 * sVar35;
      local_128 = (char *)(uVar18 + __n);
      if (image->units < PixelsPerCentimeterResolution) {
        local_e4 = (uint)(longlong)
                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)
        ;
        bmp_info.x_pixels = local_e4;
        local_e4 = (uint)(longlong)
                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)
        ;
        bmp_info.y_pixels = local_e4;
      }
      else if (image->units == PixelsPerCentimeterResolution) {
        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);
        bmp_info.x_pixels = local_e4;
        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);
        bmp_info.y_pixels = local_e4;
      }
      uVar40 = sVar28 + 0x100;
      if (sVar28 + 0x100 < uVar21) {
        uVar40 = uVar21;
      }
      bmp_info.file_size = (uint)local_128;
      bmp_info.width = sVar28;
      bmp_info.height = sVar35;
      bmp_info.image_size = __n;
      bmp_info.colors_important = local_144;
      local_124 = AcquireVirtualMemory(sVar35,uVar40);
      pIVar24 = image;
      if (local_124 == (MemoryInfo *)0x0) {
        ThrowMagickException
                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,
                   "MemoryAllocationFailed","`%s\'",image->filename);
        p_Var6 = (_Image *)image_info->adjoin;
        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {
          p_Var6 = pIVar9->previous;
          image = p_Var6;
          pIVar24 = pIVar9;
        }
        goto LAB_001d3a2a;
      }
      local_168 = (char *)GetVirtualMemoryBlob(local_124);
      memset(local_168,0,__n);
      value = CONCAT11(uStack_17b,local_17c);
      switch(value) {
      default:
        goto _L71;
      case 1:
        if ((int)image->rows < 1) break;
        local_14c = 0;
        local_148 = 0;
        uVar18 = 0;
        do {
          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);
          if (pQVar23 == (Quantum *)0x0) break;
          sVar47 = image->columns;
          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;
          local_17c = (byte)sVar47;
          uStack_17b = (undefined1)(sVar47 >> 8);
          uStack_17a = (undefined2)(sVar47 >> 0x10);
          pcVar16 = local_164;
          if (0 < (int)sVar47) {
            uVar20 = 0;
            iVar15 = 0;
            iVar22 = 0;
            do {
              uVar20 = uVar20 * 2;
              if (image->channel_map[5].traits != UndefinedPixelTrait) {
                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);
                if (pQVar23[image->channel_map[5].offset] != 0.0) {
                  uVar40 = 1;
                }
                uVar20 = uVar20 | uVar40;
              }
              iVar15 = iVar15 + 1;
              if (iVar15 == 8) {
                iVar15 = 0;
                *local_164 = (char)uVar20;
                local_164 = local_164 + 1;
                uVar20 = 0;
                sVar47 = image->columns;
                local_17c = (byte)sVar47;
                uStack_17b = (undefined1)(sVar47 >> 8);
                uStack_17a = (undefined2)(sVar47 >> 0x10);
              }
              iVar22 = iVar22 + 1;
              pQVar23 = pQVar23 + image->number_channels;
              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
            } while (iVar22 < (int)sVar47);
            pcVar16 = local_164;
            if (iVar15 != 0) {
              pcVar16 = local_164 + 1;
              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));
              sVar47 = image->columns;
            }
          }
          iVar15 = sVar47 + 0xe;
          if (-1 < (int)(sVar47 + 7)) {
            iVar15 = sVar47 + 7;
          }
          if (iVar15 >> 3 < (int)uVar21) {
            pcVar37 = pcVar16;
            do {
              pcVar34 = pcVar37 + 1;
              *pcVar37 = '\0';
              pcVar37 = pcVar34;
            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));
          }
          uVar20 = image->rows;
          if (image->previous == (_Image *)0x0) {
            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),
                                      (ulonglong)uVar20);
            if (MVar14 == MagickFalse) break;
            uVar20 = image->rows;
          }
          uVar18 = uVar18 + 1;
          bVar44 = 0xfffffffe < local_14c;
          local_14c = local_14c + 1;
          local_148 = local_148 + (uint)bVar44;
        } while ((int)uVar18 < (int)uVar20);
        bVar44 = bVar12 != 2;
        goto LAB_001d149a;
      case 4:
        local_14c = 0;
        local_148 = 0;
        uVar18 = 0;
        if (0 < (int)image->rows) {
          do {
            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);
            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;
            sVar47 = image->columns;
            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;
            local_17c = (byte)sVar47;
            uStack_17b = (undefined1)(sVar47 >> 8);
            uStack_17a = (undefined2)(sVar47 >> 0x10);
            pcVar16 = local_164;
            if (0 < (int)sVar47) {
              bVar44 = false;
              iVar15 = 0;
              uVar20 = 0;
              do {
                uVar20 = uVar20 << 4;
                if (image->channel_map[5].traits != UndefinedPixelTrait) {
                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);
                  uVar20 = uVar20 | local_e4 & 0xf;
                }
                bVar44 = !bVar44;
                if (!bVar44) {
                  *local_164 = (char)uVar20;
                  local_164 = local_164 + 1;
                  uVar20 = 0;
                  sVar47 = image->columns;
                  local_17c = (byte)sVar47;
                  uStack_17b = (undefined1)(sVar47 >> 8);
                  uStack_17a = (undefined2)(sVar47 >> 0x10);
                }
                iVar15 = iVar15 + 1;
                pQVar23 = pQVar23 + image->number_channels;
                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
              } while (iVar15 < (int)sVar47);
              pcVar16 = local_164;
              if (bVar44) {
                pcVar16 = local_164 + 1;
                *local_164 = (char)(uVar20 << 4);
                sVar47 = image->columns;
              }
            }
            iVar15 = (int)(sVar47 + 1) / 2;
            if (iVar15 < (int)uVar21) {
              pcVar37 = pcVar16;
              do {
                pcVar34 = pcVar37 + 1;
                *pcVar37 = '\0';
                pcVar37 = pcVar34;
              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));
            }
            uVar20 = image->rows;
            if (image->previous == (_Image *)0x0) {
              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),
                                        (ulonglong)uVar20);
              if (MVar14 == MagickFalse) goto LAB_001d1490;
              uVar20 = image->rows;
            }
            uVar18 = uVar18 + 1;
            bVar44 = 0xfffffffe < local_14c;
            local_14c = local_14c + 1;
            local_148 = local_148 + (uint)bVar44;
          } while ((int)uVar18 < (int)uVar20);
          bVar44 = bVar12 != 2;
          goto LAB_001d149a;
        }
        break;
      case 8:
        local_164 = (char *)0x0;
        local_160 = 0;
        uVar40 = 0;
        if (0 < (int)image->rows) {
          do {
            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);
            if (pQVar23 == (Quantum *)0x0) break;
            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;
            pcVar16 = pcVar37;
            if ((int)image->columns < 1) {
              iVar15 = 0;
              pcVar34 = pcVar37;
            }
            else {
              do {
                cVar30 = '\0';
                if (image->channel_map[5].traits != UndefinedPixelTrait) {
                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);
                }
                pcVar34 = pcVar16 + 1;
                *pcVar16 = cVar30;
                pQVar23 = pQVar23 + image->number_channels;
                iVar15 = (int)pcVar34 - (int)pcVar37;
                pcVar16 = pcVar34;
              } while (iVar15 < (int)image->columns);
            }
            if (iVar15 < (int)uVar21) {
              pcVar16 = pcVar34;
              do {
                pcVar37 = pcVar16 + 1;
                *pcVar16 = '\0';
                pcVar16 = pcVar37;
              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));
            }
            uVar26 = image->rows;
            if (image->previous == (_Image *)0x0) {
              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),
                                        (ulonglong)uVar26);
              if (MVar14 == MagickFalse) break;
              uVar26 = image->rows;
            }
            uVar40 = uVar40 + 1;
            bVar44 = 0xfffffffe < local_164;
            local_164 = (char *)((int)local_164 + 1);
            local_160 = local_160 + (uint)bVar44;
          } while ((int)uVar40 < (int)uVar26);
        }
_L71:
        bVar44 = bVar12 != 2;
        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;
        bVar33 = bVar45 && bVar44;
        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))
        goto LAB_001d149a;
        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);
        if (memory_info != (MemoryInfo *)0x0) {
          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);
          bmp_info.file_size = uVar18;
          if (image->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,
                          "EncodeImage");
          }
          if (image->debug != MagickFalse) {
            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename
                          );
          }
          if (pcVar16 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,
                          "EncodeImage");
          }
          local_164 = pcVar16;
          if (0 < (int)image->rows) {
            local_134 = 0;
            iVar15 = 0;
            do {
              iVar22 = 0;
              pcVar37 = local_164;
              if (uVar20 != 0) {
                iVar27 = 1;
                if (1 < uVar21) {
                  do {
                    if (*local_168 == local_168[1]) {
                      iVar27 = 1;
                      pcVar37 = local_168 + 2;
                      do {
                        pcVar34 = pcVar37;
                        iVar27 = iVar27 + 1;
                        iVar42 = iVar22 + iVar27;
                        if (iVar27 == uVar21 - iVar22) {
                          pcVar34 = local_168 + iVar27;
                          break;
                        }
                        if (iVar27 == 0xff) {
                          iVar27 = -1;
                          pcVar34 = local_168 + 0xff;
                          break;
                        }
                        pcVar37 = pcVar34 + 1;
                      } while (*pcVar34 == *local_168);
                      *local_164 = (char)iVar27;
                      pcVar37 = local_164 + 2;
                      local_164[1] = *local_168;
                      iVar22 = iVar42;
                      local_168 = pcVar34;
                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;
                    }
                    else {
                      pcVar34 = local_168 + 1;
                      *local_164 = '\x01';
                      local_164[1] = *local_168;
                      iVar22 = iVar27;
                    }
                    local_164 = local_164 + 2;
                    iVar27 = iVar22 + 1;
                    local_168 = pcVar34;
                  } while (iVar27 < (int)uVar21);
                }
                *local_164 = '\x01';
                pcVar37 = local_164 + 2;
                local_164[1] = *local_168;
                local_168 = local_168 + 1;
              }
LAB_001d2581:
              local_164 = pcVar37 + 2;
              pcVar37[0] = '\0';
              pcVar37[1] = '\0';
              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);
              if (MVar14 == MagickFalse) break;
              iVar15 = iVar15 + 1;
              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),
                                   (uint)local_134 + 1);
            } while (iVar15 < (int)image->rows);
          }
          local_164[0] = '\0';
          local_164[1] = '\x01';
          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));
          local_128 = (char *)(bmp_info.image_size + uVar18);
          bmp_info.file_size = (uint)local_128;
          RelinquishVirtualMemory(local_124);
          bmp_info.compression = 1;
          local_168 = pcVar16;
          local_124 = memory_info;
          if (image->debug == MagickFalse) goto LAB_001d14a8;
          goto LAB_001d2640;
        }
        RelinquishVirtualMemory(local_124);
        ThrowMagickException
                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,
                   "MemoryAllocationFailed","`%s\'",image->filename);
        p_Var6 = (_Image *)image_info->adjoin;
        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {
          p_Var6 = pIVar9->previous;
          image = p_Var6;
          pIVar24 = pIVar9;
        }
        goto LAB_001d3a2a;
      case 0x10:
        local_14c = 0;
        local_104 = 0;
        local_100 = 0;
        if (0 < (int)image->rows) {
          do {
            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);
            if (pQVar23 == (Quantum *)0x0) break;
            uVar18 = image->rows;
            sVar47 = image->columns;
            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);
            puVar38 = puVar25;
            if (0 < (int)sVar47) {
              sVar4 = image->number_channels;
              pPVar5 = image->channel_map;
              puVar38 = puVar25 + sVar47;
              iVar22 = pPVar5->offset;
              do {
                dVar1 = pQVar23[iVar22];
                if (iVar15 == 3) {
                  uVar13 = 0xf000;
                  if (pPVar5[4].traits != UndefinedPixelTrait) {
                    uVar13 = 0;
                    if (0.0 < pQVar23[pPVar5[4].offset]) {
                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /
                              (double)DAT_0029f710;
                      if (dVar8 < (double)DAT_0029f714) {
                        dVar8 = dVar8 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar8) {
                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar8);
                        }
                        uVar13 = (ushort)(local_e4 << 0xc);
                      }
                      else {
                        uVar13 = 0xf000;
                      }
                    }
                  }
                  if (0.0 < dVar1) {
                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= dVar1) {
                      uVar13 = 0xff00;
                    }
                    else {
                      dVar1 = dVar1 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar1) {
                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                      }
                      else {
                        local_e4 = (uint)(longlong)ROUND(dVar1);
                      }
                      uVar13 = uVar13 | (ushort)(local_e4 << 8);
                    }
                  }
                  if (0.0 < pQVar23[pPVar5[1].offset]) {
                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /
                            (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= dVar1) {
                      uVar13 = 0xfff0;
                    }
                    else {
                      dVar1 = dVar1 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar1) {
                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                      }
                      else {
                        local_e4 = (uint)(longlong)ROUND(dVar1);
                      }
                      uVar13 = uVar13 | (ushort)(local_e4 << 4);
                    }
                  }
                  if (0.0 < pQVar23[pPVar5[2].offset]) {
                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /
                            (double)DAT_0029f710;
                    if (dVar1 < (double)DAT_0029f714) {
                      dVar1 = dVar1 + (double)DAT_0029f124;
                      if (dVar1 < (double)DAT_0029f134) {
LAB_001d2faa:
                        uVar32 = (ushort)(longlong)ROUND(dVar1);
                      }
                      else {
                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                      }
                      goto LAB_001d21be;
                    }
LAB_001d2eba:
                    uVar13 = 0xffff;
                  }
                }
                else {
                  uVar13 = 0;
                  if (iVar15 == 2) {
                    if (0.0 < dVar1) {
                      uVar13 = 0xf800;
                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if (dVar1 < (double)DAT_0029f714) {
                        dVar1 = dVar1 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar1) {
                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar1);
                        }
                        uVar13 = (ushort)(local_e4 << 0xb);
                      }
                    }
                    if (0.0 < pQVar23[pPVar5[1].offset]) {
                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /
                              (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar1) {
                        uVar13 = 0xffe0;
                      }
                      else {
                        dVar1 = dVar1 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar1) {
                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar1);
                        }
                        uVar13 = uVar13 | (ushort)(local_e4 << 5);
                      }
                    }
                    if (0.0 < pQVar23[pPVar5[2].offset]) {
                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /
                              (double)DAT_0029f710;
                      if (dVar1 < (double)DAT_0029f714) {
                        dVar1 = dVar1 + (double)DAT_0029f124;
                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;
                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                        goto LAB_001d21be;
                      }
                      goto LAB_001d2eba;
                    }
                  }
                  else {
                    uVar13 = 0;
                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))
                    {
                      uVar13 = 0;
                      if (0.0 < pQVar23[pPVar5[4].offset]) {
                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;
                        if (dVar8 < (double)DAT_0029f714) {
                          dVar8 = dVar8 + (double)DAT_0029f124;
                          if ((double)DAT_0029f134 <= dVar8) {
                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);
                          }
                          else {
                            local_e4 = (uint)(longlong)ROUND(dVar8);
                          }
                          uVar13 = (ushort)(local_e4 << 0xf);
                        }
                        else {
                          uVar13 = 0x8000;
                        }
                      }
                    }
                    if (0.0 < dVar1) {
                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar1) {
                        uVar13 = 0xfc00;
                      }
                      else {
                        dVar1 = dVar1 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar1) {
                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar1);
                        }
                        uVar13 = uVar13 | (ushort)(local_e4 << 10);
                      }
                    }
                    if (0.0 < pQVar23[pPVar5[1].offset]) {
                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /
                              (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar1) {
                        uVar13 = 0xffe0;
                      }
                      else {
                        dVar1 = dVar1 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar1) {
                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar1);
                        }
                        uVar13 = uVar13 | (ushort)(local_e4 << 5);
                      }
                    }
                    if (0.0 < pQVar23[pPVar5[2].offset]) {
                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /
                              (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;
                      dVar1 = dVar1 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar1) {
                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);
                      }
                      else {
                        uVar32 = (ushort)(longlong)ROUND(dVar1);
                      }
LAB_001d21be:
                      uVar13 = uVar13 | uVar32;
                    }
                  }
                }
                *puVar25 = uVar13;
                pQVar23 = pQVar23 + sVar4;
                puVar25 = puVar25 + 1;
              } while (puVar25 != puVar38);
            }
            if (uVar21 != sVar47 * 2 &&
                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {
              puVar25 = puVar38;
              do {
                puVar39 = (ushort *)((int)puVar25 + 1);
                *(char *)puVar25 = '\0';
                puVar25 = puVar39;
              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));
              uVar18 = image->rows;
            }
            if (image->previous == (_Image *)0x0) {
              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),
                                        (ulonglong)uVar18);
              if (MVar14 == MagickFalse) break;
              uVar18 = image->rows;
            }
            local_14c = local_14c + 1;
            bVar44 = 0xfffffffe < local_104;
            local_104 = local_104 + 1;
            local_100 = local_100 + (uint)bVar44;
          } while ((int)local_14c < (int)uVar18);
          bVar44 = bVar12 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x18:
        uVar18 = 0;
        local_184 = 0;
        if (0 < (int)image->rows) {
          do {
            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);
            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;
            sVar47 = image->columns;
            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;
            if (0 < (int)sVar47) {
              iVar15 = 0;
              pcVar37 = pcVar16;
              do {
                cVar30 = '\0';
                if (0.0 < pQVar23[image->channel_map[2].offset]) {
                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (dVar1 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                  }
                }
                *pcVar37 = cVar30;
                cVar30 = '\0';
                if (0.0 < pQVar23[image->channel_map[1].offset]) {
                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (dVar1 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                  }
                }
                pcVar16 = pcVar37 + 3;
                pcVar37[1] = cVar30;
                cVar30 = '\0';
                if (0.0 < pQVar23[image->channel_map->offset]) {
                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (dVar1 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                  }
                }
                iVar15 = iVar15 + 1;
                pcVar37[2] = cVar30;
                pQVar23 = pQVar23 + image->number_channels;
                sVar47 = image->columns;
                pcVar37 = pcVar16;
              } while (iVar15 < (int)sVar47);
            }
            if ((int)(sVar47 * 3) < (int)uVar21) {
              pcVar37 = pcVar16;
              do {
                pcVar34 = pcVar37 + 1;
                *pcVar37 = '\0';
                pcVar37 = pcVar34;
              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);
            }
            uVar20 = image->rows;
            if (image->previous == (_Image *)0x0) {
              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);
              if (MVar14 == MagickFalse) goto LAB_001d1490;
              uVar20 = image->rows;
            }
            uVar18 = uVar18 + 1;
            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),
                                 (uint)local_184 + 1);
          } while ((int)uVar18 < (int)uVar20);
          bVar44 = bVar12 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x20:
        local_17c = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        iStack_178 = 0;
        local_184._0_4_ = 0;
        if (0 < (int)image->rows) {
          do {
            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);
            if (pQVar23 == (Quantum *)0x0) break;
            uVar18 = image->rows;
            if (0 < (int)image->columns) {
              iVar15 = 0;
              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;
              do {
                cVar30 = '\0';
                if (0.0 < pQVar23[image->channel_map[2].offset]) {
                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (dVar1 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                  }
                }
                *pcVar16 = cVar30;
                cVar30 = '\0';
                if (0.0 < pQVar23[image->channel_map[1].offset]) {
                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (dVar1 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                  }
                }
                pcVar16[1] = cVar30;
                cVar30 = '\0';
                if (0.0 < pQVar23[image->channel_map->offset]) {
                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (dVar1 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                  }
                }
                pcVar16[2] = cVar30;
                cVar30 = -1;
                if (image->channel_map[4].traits != UndefinedPixelTrait) {
                  cVar30 = '\0';
                  if (0.0 < pQVar23[image->channel_map[4].offset]) {
                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;
                    if ((double)DAT_002a7ff4 <= dVar1) {
                      cVar30 = -1;
                    }
                    else {
                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);
                    }
                  }
                }
                pcVar16[3] = cVar30;
                iVar15 = iVar15 + 1;
                pQVar23 = pQVar23 + image->number_channels;
                pcVar16 = pcVar16 + 4;
              } while (iVar15 < (int)image->columns);
              uVar18 = image->rows;
            }
            if (image->previous == (_Image *)0x0) {
              MVar14 = SetImageProgress(image,"Save/Image",
                                        CONCAT44(iStack_178,
                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))
                                                ),(ulonglong)uVar18);
              if (MVar14 == MagickFalse) break;
              uVar18 = image->rows;
            }
            local_184._0_4_ = (uint)local_184 + 1;
            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;
            local_17c = (byte)iVar15;
            uStack_17b = (undefined1)((uint)iVar15 >> 8);
            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);
            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);
          } while ((int)(uint)local_184 < (int)uVar18);
        }
      }
LAB_001d1490:
      bVar44 = bVar12 != 2;
LAB_001d149a:
      bVar33 = bVar44;
      if (image->debug == MagickFalse) {
LAB_001d14a8:
        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;
LAB_001d14b4:
        local_164 = local_128 + -0xe;
        sVar47 = GetStringInfoLength(string_info);
        local_17c = (byte)sVar47;
        uStack_17b = (undefined1)(sVar47 >> 8);
        uStack_17a = (undefined2)(sVar47 >> 0x10);
        uVar18 = sVar47 & 3;
        if (uVar18 == 0) {
          local_174 = 0;
          local_170 = 0;
        }
        else {
          local_174 = 4 - uVar18;
          local_170 = -(uint)(4 < uVar18);
        }
        local_128 = local_128 + local_174 + sVar47;
        bmp_info.file_size = (uint)local_128;
      }
      else {
LAB_001d2640:
        uVar48 = SUB82((double)bVar12,0);
        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);
        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,
                       "   Writing BMP version %.20g datastream",uVar48,uVar49);
        if (image->storage_class == DirectClass) {
          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,
                         "   Storage class=DirectClass",uVar48,uVar49);
        }
        else {
          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,
                         "   Storage class=PseudoClass",uVar48,uVar49);
        }
        uVar48 = SUB82((double)image->depth,0);
        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);
        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48
                       ,uVar49);
        if (image->alpha_trait == UndefinedPixelTrait) {
          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",
                         uVar48,uVar49);
        }
        else {
          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,
                         uVar49);
        }
        uVar48 = SUB82((double)value,0);
        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);
        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"
                       ,uVar48,uVar49);
        if (bmp_info.compression == 1) {
          pcVar16 = "   Compression=BI_RLE8";
          sVar47 = 0x8ba;
        }
        else if (bmp_info.compression == 0) {
          pcVar16 = "   Compression=BI_RGB";
          sVar47 = 0x8b4;
        }
        else if (bmp_info.compression == 3) {
          pcVar16 = "   Compression=BI_BITFIELDS";
          sVar47 = 0x8c0;
        }
        else {
          uVar48 = (undefined2)bmp_info.compression;
          pcVar16 = "   Compression=UNKNOWN (%u)";
          sVar47 = 0x8c6;
        }
        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);
        if (local_144 == 0) {
          pcVar16 = "   Number_colors=unspecified";
          sVar47 = 0x8cc;
        }
        else {
          pcVar16 = "   Number_colors=%u";
          uVar48 = (undefined2)local_144;
          sVar47 = 0x8cf;
        }
        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);
        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;
LAB_001d279e:
        local_174 = 0;
        local_170 = 0;
        local_17c = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        local_164 = (char *)0x0;
      }
      WriteBlob(image,2,&DAT_002a251a);
      WriteBlobLSBLong(image,(uint)local_128);
      WriteBlobLSBLong(image,0);
      WriteBlobLSBLong(image,bmp_info.offset_bits);
      if (bVar12 == 2) {
        WriteBlobLSBLong(image,bmp_info.size);
        WriteBlobLSBSignedShort(image,(short)sVar28);
        WriteBlobLSBSignedShort(image,(short)sVar35);
        WriteBlobLSBShort(image,1);
        WriteBlobLSBShort(image,value);
        CVar19 = image->storage_class;
        MVar14 = image->debug;
      }
      else {
        WriteBlobLSBLong(image,bmp_info.size);
        WriteBlobLSBSignedLong(image,sVar28);
        WriteBlobLSBSignedLong(image,sVar35);
        WriteBlobLSBShort(image,1);
        WriteBlobLSBShort(image,value);
        WriteBlobLSBLong(image,bmp_info.compression);
        WriteBlobLSBLong(image,bmp_info.image_size);
        WriteBlobLSBLong(image,bmp_info.x_pixels);
        WriteBlobLSBLong(image,bmp_info.y_pixels);
        WriteBlobLSBLong(image,local_144);
        WriteBlobLSBLong(image,local_144);
        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {
          WriteBlobLSBLong(image,bmp_info.red_mask);
          WriteBlobLSBLong(image,bmp_info.green_mask);
          WriteBlobLSBLong(image,bmp_info.blue_mask);
          WriteBlobLSBLong(image,bmp_info.alpha_mask);
          if (string_info == (StringInfo *)0x0) {
            WriteBlobLSBLong(image,0x73524742);
          }
          else {
            WriteBlobLSBLong(image,0x4d424544);
          }
          dVar1 = (image->chromaticity).red_primary.x;
          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {
            local_e4 = 0;
            (image->chromaticity).red_primary.x = 0.0;
          }
          else {
            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);
          }
          dVar1 = (image->chromaticity).red_primary.y;
          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {
            (image->chromaticity).red_primary.y = 0.0;
          }
          dVar1 = (image->chromaticity).green_primary.x;
          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {
            (image->chromaticity).green_primary.x = 0.0;
          }
          dVar1 = (image->chromaticity).green_primary.y;
          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {
            (image->chromaticity).green_primary.y = 0.0;
          }
          dVar1 = (image->chromaticity).blue_primary.x;
          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {
            (image->chromaticity).blue_primary.x = 0.0;
          }
          dVar1 = (image->chromaticity).blue_primary.y;
          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {
            (image->chromaticity).blue_primary.y = 0.0;
          }
          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {
            bmp_info.gamma_scale.x = 0.0;
          }
          dVar1 = bmp_info.gamma_scale.x;
          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {
            bmp_info.gamma_scale.y = 0.0;
          }
          dVar8 = bmp_info.gamma_scale.y;
          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {
            bmp_info.gamma_scale.z = 0.0;
          }
          dVar10 = bmp_info.gamma_scale.z;
          WriteBlobLSBLong(image,local_e4);
          dVar2 = (double)DAT_002cc820;
          local_e4 = (uint)(longlong)
                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - ((image->chromaticity).red_primary.x +
                                        (image->chromaticity).red_primary.y)) * dVar2);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - ((image->chromaticity).green_primary.x +
                                        (image->chromaticity).green_primary.y)) * dVar2);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +
                                        (image->chromaticity).blue_primary.y)) * dVar2);
          WriteBlobLSBLong(image,local_e4);
          dVar2 = (double)DAT_002b2420;
          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);
          WriteBlobLSBLong(image,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);
          WriteBlobLSBLong(image,local_e4);
          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {
            uVar20 = image->rendering_intent - SaturationIntent;
            uVar18 = 0;
            if (uVar20 < 4) {
              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);
            }
            WriteBlobLSBLong(image,uVar18);
            WriteBlobLSBLong(image,(uint)local_164);
            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);
            WriteBlobLSBLong(image,0);
          }
        }
        CVar19 = image->storage_class;
        MVar14 = image->debug;
      }
      if (CVar19 == PseudoClass) {
        if (MVar14 != MagickFalse) {
          local_184 = (ulonglong)image->colors;
          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"
                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));
        }
        bVar31 = (byte)bmp_info.bits_per_pixel;
        sVar28 = 1 << (bVar31 & 0x1f);
        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);
        if (data_00 == (undefined2 *)0x0) {
          RelinquishVirtualMemory(local_124);
          ThrowMagickException
                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,
                     "MemoryAllocationFailed","`%s\'",image->filename);
          p_Var6 = (_Image *)image_info->adjoin;
          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {
            p_Var6 = pIVar9->previous;
            image = p_Var6;
            pIVar24 = pIVar9;
          }
LAB_001d3a2a:
          CloseBlob(pIVar24);
          MVar14 = MagickFalse;
          goto LAB_001d3a3a;
        }
        uVar18 = bmp_info.number_colors;
        if ((int)image->colors <= (int)bmp_info.number_colors) {
          uVar18 = image->colors;
        }
        puVar29 = data_00;
        if ((int)uVar18 < 1) {
          sVar35 = 0;
        }
        else {
          iVar15 = 0;
          sVar35 = 0;
          do {
            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);
            uVar36 = 0;
            if (0.0 < dVar1) {
              dVar1 = dVar1 / (double)DAT_002a7ff0;
              uVar36 = 0xff;
              if (dVar1 < (double)DAT_002a7ff4) {
                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)puVar29 = uVar36;
            dVar1 = *(double *)((int)&image->colormap->green + iVar15);
            uVar36 = 0;
            if (0.0 < dVar1) {
              dVar1 = dVar1 / (double)DAT_002a7ff0;
              uVar36 = 0xff;
              if (dVar1 < (double)DAT_002a7ff4) {
                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)((int)puVar29 + 1) = uVar36;
            dVar1 = *(double *)((int)&image->colormap->red + iVar15);
            uVar36 = 0;
            if (0.0 < dVar1) {
              dVar1 = dVar1 / (double)DAT_002a7ff0;
              uVar36 = 0xff;
              if (dVar1 < (double)DAT_002a7ff4) {
                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)(puVar29 + 1) = uVar36;
            if (bVar33) {
              *(undefined1 *)((int)puVar29 + 3) = 0;
              puVar29 = puVar29 + 2;
            }
            else {
              puVar29 = (undefined2 *)((int)puVar29 + 3);
            }
            sVar35 = sVar35 + 1;
            iVar15 = iVar15 + 0x50;
            uVar18 = bmp_info.number_colors;
            if ((int)image->colors <= (int)bmp_info.number_colors) {
              uVar18 = image->colors;
            }
          } while ((int)sVar35 < (int)uVar18);
        }
        if ((int)sVar35 < (int)sVar28) {
          do {
            while( true ) {
              *(undefined1 *)(puVar29 + 1) = 0;
              *puVar29 = 0;
              if (!bVar33) break;
              sVar35 = sVar35 + 1;
              *(undefined1 *)((int)puVar29 + 3) = 0;
              puVar29 = puVar29 + 2;
              if (sVar35 == sVar28) goto LAB_001d3985;
            }
            sVar35 = sVar35 + 1;
            puVar29 = (undefined2 *)((int)puVar29 + 3);
          } while (sVar35 != sVar28);
        }
LAB_001d3985:
        if (bVar12 == 2) {
          iVar15 = 3;
        }
        else {
          iVar15 = 4;
        }
        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);
        RelinquishMagickMemory(data_00);
        MVar14 = image->debug;
      }
      uVar18 = bmp_info.image_size;
      if (MVar14 != MagickFalse) {
        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",
                       (short)bmp_info.image_size);
      }
      WriteBlob(image,uVar18,local_168);
      if (string_info != (StringInfo *)0x0) {
        if (image->debug != MagickFalse) {
          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +
                  (double)(short)local_174;
          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",
                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));
        }
        data = GetStringInfoDatum(string_info);
        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);
        if (local_170 != 0 || local_174 != 0) {
          WriteBlob(image,local_174,&DAT_002cc660);
        }
      }
      RelinquishVirtualMemory(local_124);
      pIVar24 = GetNextImageInList(image);
      if (pIVar24 == (Image *)0x0) {
LAB_001d3caf:
        CloseBlob(image);
        MVar14 = MagickTrue;
        goto LAB_001d3a3a;
      }
      image = SyncNextImageInList(image);
      uVar20 = local_10c + 1;
      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);
      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)
      ;
      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;
      uVar18 = image->colorspace - GRAYColorspace;
      local_10c = uVar20;
      local_108 = iVar15;
      if (0x1e < uVar18) break;
LAB_001d1cae:
    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_001d0cb0(int *param_1,int *param_2,int param_3)

{
  double dVar1;
  double dVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  bool bVar6;
  ushort uVar7;
  int *piVar8;
  double dVar9;
  byte bVar10;
  byte bVar11;
  ushort uVar12;
  int iVar13;
  int iVar14;
  undefined4 uVar15;
  uint uVar16;
  uint uVar17;
  int iVar18;
  int iVar19;
  ushort *puVar20;
  undefined2 *puVar21;
  int iVar22;
  undefined2 *puVar23;
  char cVar24;
  byte bVar25;
  ushort uVar26;
  uint uVar27;
  int iVar28;
  bool bVar29;
  char *pcVar30;
  undefined1 uVar31;
  ushort *puVar32;
  ushort *puVar33;
  uint uVar34;
  int *piVar35;
  undefined4 *puVar36;
  size_t sVar37;
  char *pcVar38;
  int iVar39;
  int iVar40;
  int in_GS_OFFSET;
  bool bVar41;
  bool bVar42;
  bool bVar43;
  byte bVar44;
  undefined4 uVar45;
  char *pcVar46;
  double dVar47;
  undefined8 local_184;
  byte local_17c;
  undefined1 uStack_17b;
  undefined2 uStack_17a;
  int iStack_178;
  int local_174;
  int local_170;
  char *local_168;
  char *local_164;
  int local_160;
  uint local_14c;
  int iStack_148;
  uint local_144;
  uint local_134;
  int iStack_130;
  int local_128;
  int local_124;
  short local_120;
  short local_11c;
  uint local_10c;
  int local_108;
  uint local_104;
  int iStack_100;
  uint local_e4;
  int local_c8;
  undefined4 local_c4;
  int local_c0;
  undefined4 local_bc;
  int local_b8;
  int local_b4;
  undefined2 local_b0;
  short local_ae;
  uint local_ac;
  size_t local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  uint local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  uint local_88;
  double local_38;
  double local_30;
  double local_28;
  int local_20;
  
  bVar44 = 0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");
  }
  if (param_1[0xc7d] != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,
                  "WriteBMPImage");
  }
  if (param_2 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");
  }
  if (param_2[0xcd1] != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");
  }
  if (param_2[0xcca] != 0) {
    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");
  }
  if (*(int *)(param_3 + 0x1c) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"
                 );
  }
  iVar13 = OpenBlob(param_1,param_2,4,param_3);
  if (iVar13 == 0) {
LAB_001d3a3a:
    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
      FUN_0029eab0();
    }
    return iVar13;
  }
  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);
  bVar11 = 2;
  if (iVar13 != 0) {
    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);
    bVar11 = (iVar13 != 0) + 3;
  }
  iVar13 = GetImageOption(param_1,"bmp:format");
  if (iVar13 != 0) {
    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);
    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);
    bVar25 = 2;
    if (iVar14 != 0) {
      bVar25 = bVar11;
    }
    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);
    bVar10 = 3;
    if (iVar14 != 0) {
      bVar10 = bVar25;
    }
    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);
    bVar11 = 4;
    if (iVar13 != 0) {
      bVar11 = bVar10;
    }
  }
  uVar15 = GetImageListLength(param_2);
  local_10c = 0;
  local_108 = 0;
  uVar16 = param_2[1] - 3;
  if (uVar16 < 0x1f) goto LAB_001d1cae;
  do {
    TransformImageColorspace(param_2,0x17);
    do {
      puVar36 = &local_c4;
      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {
        *puVar36 = 0;
        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;
      }
      if (bVar11 == 2) {
        local_c8 = 0x1a;
        iVar13 = 0x1a;
      }
      else {
        local_c8 = 0x36;
        iVar13 = 0x36;
      }
      local_98 = 0xff0000;
      local_94 = 0xff00;
      local_90 = 0xff;
      local_8c = 0xff000000;
      iVar14 = *param_2;
      local_c0 = iVar13;
      if (iVar14 == 2) {
        uVar16 = param_2[9];
        if (0x100 < uVar16) {
          SetImageStorageClass(param_2,1);
          iVar14 = *param_2;
          goto LAB_001d0f25;
        }
LAB_001d0f31:
        if (uVar16 < 3) {
          local_ae = 1;
          if (*param_1 == 0x13) goto LAB_001d36c0;
LAB_001d0f54:
          local_17c = (byte)local_ae;
          local_144 = 1 << (local_17c & 0x1f);
          uStack_17b = (undefined1)((ushort)local_ae >> 8);
        }
        else {
          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;
          if (*param_1 != 0x13) goto LAB_001d0f54;
LAB_001d36c0:
          local_144 = 0x100;
          local_ae = 8;
          local_17c = 8;
          uStack_17b = 0;
        }
        local_9c = local_144;
        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {
          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));
          iVar13 = local_c0;
          if (bVar11 != 2) {
            local_c0 = local_c0 + local_144;
            iVar13 = local_c0;
          }
        }
        else {
          SetImageStorageClass(param_2,1);
          if (*param_2 == 1) goto LAB_001d3250;
        }
        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);
        iVar14 = 0;
        local_c8 = iVar13;
      }
      else {
LAB_001d0f25:
        if (iVar14 != 1) {
          uVar16 = param_2[9];
          goto LAB_001d0f31;
        }
LAB_001d3250:
        local_9c = 0;
        iVar13 = GetImageOption(param_1,"bmp:subtype");
        if (iVar13 == 0) {
          if (bVar11 == 4) {
            if (param_2[0xa5] == 0) goto LAB_001d3e67;
LAB_001d3d56:
            local_ac = 3;
            local_ae = 0x20;
            local_144 = 0;
            local_17c = 0x20;
            uStack_17b = 0;
            uVar16 = 0x20;
            iVar14 = 0;
          }
          else {
LAB_001d3da8:
            local_ac = 0;
            local_ae = 0x18;
            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {
              uVar45 = GetImageOption(param_1,"bmp3:alpha");
              iVar13 = IsStringTrue(uVar45);
              if (iVar13 == 0) {
                uVar16 = 0x18;
                iVar14 = 0;
                local_17c = 0x18;
                uStack_17b = 0;
                local_144 = 0;
              }
              else {
                local_144 = 0;
                uVar16 = 0x20;
                local_ae = 0x20;
                local_17c = 0x20;
                uStack_17b = 0;
                iVar14 = 0;
              }
            }
            else {
LAB_001d3e67:
              local_ac = 0;
              local_ae = 0x18;
              local_144 = 0;
              uVar16 = 0x18;
              local_17c = 0x18;
              uStack_17b = 0;
              iVar14 = 0;
            }
          }
        }
        else {
          if (param_2[0xa5] == 0) {
            iVar14 = LocaleNCompare(iVar13,"RGB555");
            if (iVar14 == 0) {
              local_98 = 0x7c00;
              local_94 = 0x3e0;
              local_90 = 0x1f;
              local_8c = 0;
              iVar14 = 1;
            }
            else {
              iVar13 = LocaleNCompare(iVar13,"RGB565");
              if (iVar13 != 0) {
                if (bVar11 == 4) goto LAB_001d3e67;
                goto LAB_001d3da8;
              }
              local_98 = 0xf800;
              local_94 = 0x7e0;
              local_90 = 0x1f;
              local_8c = 0;
              iVar14 = 2;
            }
          }
          else {
            iVar14 = LocaleNCompare(iVar13,"ARGB4444");
            if (iVar14 == 0) {
              local_98 = 0xf00;
              local_94 = 0xf0;
              local_90 = 0xf;
              local_8c = 0xf000;
              iVar14 = 3;
            }
            else {
              iVar13 = LocaleNCompare(iVar13,"ARGB1555");
              if (iVar13 != 0) {
                if (bVar11 == 4) goto LAB_001d3d56;
                goto LAB_001d3da8;
              }
              local_98 = 0x7c00;
              local_94 = 0x3e0;
              local_90 = 0x1f;
              local_8c = 0x8000;
              iVar14 = 4;
            }
          }
          local_ac = 3;
          local_ae = 0x10;
          local_144 = 0;
          local_17c = 0x10;
          uStack_17b = 0;
          uVar16 = 0x10;
        }
      }
      local_c4 = 0;
      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;
      uVar17 = uVar16 * 4;
      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);
      bVar41 = iVar13 != 0;
      bVar6 = true;
      if (param_2[0x75] == 0 && !bVar41) {
        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;
      }
      if (bVar11 == 2) {
        local_bc = 0xc;
      }
      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {
        local_bc = 0x28;
        bVar11 = 3;
      }
      else {
        if (param_2[0x75] == 0 && !bVar41) {
          local_bc = 0x6c;
          iVar18 = 0x44;
        }
        else {
          local_bc = 0x7c;
          iVar18 = 0x54;
        }
        local_c8 = local_c8 + iVar18;
        bVar11 = 4;
        local_c0 = local_c0 + iVar18;
      }
      iVar18 = param_2[6];
      local_b0 = 1;
      local_a4 = 0xb6d;
      iVar28 = param_2[7];
      local_a0 = 0xb6d;
      sVar37 = uVar17 * iVar28;
      local_128 = local_c8 + sVar37;
      if ((uint)param_2[0x77] < 2) {
        local_e4 = (uint)(longlong)
                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /
                               (float)_DAT_002b7d50);
        local_a4 = local_e4;
        local_e4 = (uint)(longlong)
                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /
                               (float)_DAT_002b7d50);
        local_a0 = local_e4;
      }
      else if (param_2[0x77] == 2) {
        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);
        local_a4 = local_e4;
        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));
        local_a0 = local_e4;
      }
      uVar27 = iVar18 + 0x100U;
      if (iVar18 + 0x100U < uVar17) {
        uVar27 = uVar17;
      }
      local_b8 = iVar18;
      local_b4 = iVar28;
      local_a8 = sVar37;
      local_88 = local_144;
      local_124 = AcquireVirtualMemory(iVar28,uVar27);
      piVar35 = param_2;
      if (local_124 == 0) {
        ThrowMagickException
                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"
                   ,param_2 + 0xc6);
        piVar5 = (int *)param_1[3];
        while (piVar8 = param_2, piVar5 != (int *)0x0) {
          piVar5 = (int *)piVar8[0xccf];
          param_2 = piVar5;
          piVar35 = piVar8;
        }
        goto LAB_001d3a2a;
      }
      local_168 = (char *)GetVirtualMemoryBlob(local_124);
      memset(local_168,0,sVar37);
      uVar7 = CONCAT11(uStack_17b,local_17c);
      switch(uVar7) {
      default:
        goto LAB_001d23a7;
      case 1:
        if (param_2[7] < 1) break;
        local_14c = 0;
        iStack_148 = 0;
        uVar16 = 0;
        do {
          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);
          if (iVar14 == 0) break;
          iVar19 = param_2[6];
          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;
          local_17c = (byte)iVar19;
          uStack_17b = (undefined1)((uint)iVar19 >> 8);
          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
          pcVar46 = local_164;
          if (0 < iVar19) {
            uVar27 = 0;
            iVar39 = 0;
            iVar22 = 0;
            do {
              uVar27 = uVar27 * 2;
              if (*(int *)(param_2[0xaa] + 0x40) != 0) {
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);
                uVar34 = (uint)NAN(dVar47);
                if (dVar47 != 0.0) {
                  uVar34 = 1;
                }
                uVar27 = uVar27 | uVar34;
              }
              iVar39 = iVar39 + 1;
              if (iVar39 == 8) {
                iVar39 = 0;
                *local_164 = (char)uVar27;
                local_164 = local_164 + 1;
                uVar27 = 0;
                iVar19 = param_2[6];
                local_17c = (byte)iVar19;
                uStack_17b = (undefined1)((uint)iVar19 >> 8);
                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
              }
              iVar22 = iVar22 + 1;
              iVar14 = iVar14 + param_2[0xa6] * 8;
              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
            } while (iVar22 < iVar19);
            pcVar46 = local_164;
            if (iVar39 != 0) {
              pcVar46 = local_164 + 1;
              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));
              iVar19 = param_2[6];
            }
          }
          iVar14 = iVar19 + 0xe;
          if (-1 < iVar19 + 7) {
            iVar14 = iVar19 + 7;
          }
          if (iVar14 >> 3 < (int)uVar17) {
            pcVar38 = pcVar46;
            do {
              pcVar30 = pcVar38 + 1;
              *pcVar38 = '\0';
              pcVar38 = pcVar30;
            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));
          }
          iVar14 = param_2[7];
          if (param_2[0xccf] == 0) {
            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);
            if (iVar14 == 0) break;
            iVar14 = param_2[7];
          }
          uVar16 = uVar16 + 1;
          bVar42 = 0xfffffffe < local_14c;
          local_14c = local_14c + 1;
          iStack_148 = iStack_148 + (uint)bVar42;
        } while ((int)uVar16 < iVar14);
        bVar42 = bVar11 != 2;
        goto LAB_001d149a;
      case 4:
        local_14c = 0;
        iStack_148 = 0;
        uVar16 = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);
            if (iVar14 == 0) goto LAB_001d1490;
            iVar19 = param_2[6];
            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;
            local_17c = (byte)iVar19;
            uStack_17b = (undefined1)((uint)iVar19 >> 8);
            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
            pcVar46 = local_164;
            if (0 < iVar19) {
              bVar42 = false;
              iVar39 = 0;
              uVar27 = 0;
              do {
                uVar27 = uVar27 << 4;
                if (*(int *)(param_2[0xaa] + 0x40) != 0) {
                  local_e4 = (uint)(longlong)
                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));
                  uVar27 = uVar27 | local_e4 & 0xf;
                }
                bVar42 = !bVar42;
                if (!bVar42) {
                  *local_164 = (char)uVar27;
                  local_164 = local_164 + 1;
                  uVar27 = 0;
                  iVar19 = param_2[6];
                  local_17c = (byte)iVar19;
                  uStack_17b = (undefined1)((uint)iVar19 >> 8);
                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
                }
                iVar39 = iVar39 + 1;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
              } while (iVar39 < iVar19);
              pcVar46 = local_164;
              if (bVar42) {
                pcVar46 = local_164 + 1;
                *local_164 = (char)(uVar27 << 4);
                iVar19 = param_2[6];
              }
            }
            iVar14 = (iVar19 + 1) / 2;
            if (iVar14 < (int)uVar17) {
              pcVar38 = pcVar46;
              do {
                pcVar30 = pcVar38 + 1;
                *pcVar38 = '\0';
                pcVar38 = pcVar30;
              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));
            }
            iVar14 = param_2[7];
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);
              if (iVar14 == 0) goto LAB_001d1490;
              iVar14 = param_2[7];
            }
            uVar16 = uVar16 + 1;
            bVar42 = 0xfffffffe < local_14c;
            local_14c = local_14c + 1;
            iStack_148 = iStack_148 + (uint)bVar42;
          } while ((int)uVar16 < iVar14);
          bVar42 = bVar11 != 2;
          goto LAB_001d149a;
        }
        break;
      case 8:
        local_164 = (char *)0x0;
        local_160 = 0;
        uVar27 = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);
            if (iVar14 == 0) break;
            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;
            pcVar46 = pcVar38;
            if (param_2[6] < 1) {
              iVar19 = 0;
              pcVar30 = pcVar38;
            }
            else {
              do {
                cVar24 = '\0';
                if (*(int *)(param_2[0xaa] + 0x40) != 0) {
                  cVar24 = (char)(short)ROUND(*(double *)
                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));
                }
                pcVar30 = pcVar46 + 1;
                *pcVar46 = cVar24;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                iVar19 = (int)pcVar30 - (int)pcVar38;
                pcVar46 = pcVar30;
              } while (iVar19 < param_2[6]);
            }
            if (iVar19 < (int)uVar17) {
              pcVar46 = pcVar30;
              do {
                pcVar38 = pcVar46 + 1;
                *pcVar46 = '\0';
                pcVar46 = pcVar38;
              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));
            }
            iVar14 = param_2[7];
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);
              if (iVar14 == 0) break;
              iVar14 = param_2[7];
            }
            uVar27 = uVar27 + 1;
            bVar42 = 0xfffffffe < local_164;
            local_164 = (char *)((int)local_164 + 1);
            local_160 = local_160 + (uint)bVar42;
          } while ((int)uVar27 < iVar14);
        }
LAB_001d23a7:
        bVar42 = bVar11 != 2;
        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;
        bVar29 = bVar43 && bVar42;
        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;
        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);
        if (iVar14 != 0) {
          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);
          if (param_2[0xcd1] != -0x54535255) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,
                          "EncodeImage");
          }
          if (param_2[0xcca] != 0) {
            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);
          }
          if (puVar21 == (undefined2 *)0x0) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,
                          "EncodeImage");
          }
          local_164 = (char *)puVar21;
          if (0 < param_2[7]) {
            local_134 = 0;
            iStack_130 = 0;
            iVar19 = 0;
            do {
              iVar39 = 0;
              pcVar46 = local_164;
              if (uVar16 != 0) {
                iVar22 = 1;
                if (1 < uVar17) {
                  do {
                    if (*local_168 == local_168[1]) {
                      iVar22 = 1;
                      pcVar46 = local_168 + 2;
                      do {
                        pcVar38 = pcVar46;
                        iVar22 = iVar22 + 1;
                        iVar40 = iVar39 + iVar22;
                        if (iVar22 == uVar17 - iVar39) {
                          pcVar38 = local_168 + iVar22;
                          break;
                        }
                        if (iVar22 == 0xff) {
                          iVar22 = -1;
                          pcVar38 = local_168 + 0xff;
                          break;
                        }
                        pcVar46 = pcVar38 + 1;
                      } while (*pcVar38 == *local_168);
                      *local_164 = (char)iVar22;
                      pcVar46 = (char *)((int)local_164 + 2);
                      *(char *)((int)local_164 + 1) = *local_168;
                      iVar39 = iVar40;
                      local_168 = pcVar38;
                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;
                    }
                    else {
                      pcVar38 = local_168 + 1;
                      *local_164 = 1;
                      *(char *)((int)local_164 + 1) = *local_168;
                      iVar39 = iVar22;
                    }
                    local_164 = (char *)((int)local_164 + 2);
                    iVar22 = iVar39 + 1;
                    local_168 = pcVar38;
                  } while (iVar22 < (int)uVar17);
                }
                *local_164 = 1;
                pcVar46 = (char *)((int)local_164 + 2);
                *(char *)((int)local_164 + 1) = *local_168;
                local_168 = local_168 + 1;
              }
LAB_001d2581:
              local_164 = (char *)((int)pcVar46 + 2);
              *(undefined2 *)pcVar46 = 0;
              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);
              if (iVar39 == 0) break;
              iVar19 = iVar19 + 1;
              bVar42 = 0xfffffffe < local_134;
              local_134 = local_134 + 1;
              iStack_130 = iStack_130 + (uint)bVar42;
            } while (iVar19 < param_2[7]);
          }
          local_164[0] = '\0';
          local_164[1] = '\x01';
          local_a8 = (int)local_164 + (2 - (int)puVar21);
          local_128 = local_a8 + local_c8;
          RelinquishVirtualMemory(local_124);
          local_ac = 1;
          local_124 = iVar14;
          if (param_2[0xcca] == 0) goto LAB_001d14a8;
          goto LAB_001d2640;
        }
        RelinquishVirtualMemory(local_124);
        ThrowMagickException
                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"
                   ,param_2 + 0xc6);
        piVar5 = (int *)param_1[3];
        while (piVar8 = param_2, piVar5 != (int *)0x0) {
          piVar5 = (int *)piVar8[0xccf];
          param_2 = piVar5;
          piVar35 = piVar8;
        }
        goto LAB_001d3a2a;
      case 0x10:
        local_14c = 0;
        local_104 = 0;
        iStack_100 = 0;
        if (0 < param_2[7]) {
          do {
            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);
            if (iVar19 == 0) break;
            iVar39 = param_2[7];
            iVar22 = param_2[6];
            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);
            puVar32 = puVar20;
            if (0 < iVar22) {
              iVar40 = param_2[0xa6];
              iVar3 = param_2[0xaa];
              puVar32 = puVar20 + iVar22;
              iVar4 = *(int *)(iVar3 + 8);
              do {
                dVar47 = *(double *)(iVar19 + iVar4 * 8);
                if (iVar14 == 3) {
                  uVar12 = 0xf000;
                  if (*(int *)(iVar3 + 0x34) != 0) {
                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);
                    uVar12 = 0;
                    if (0.0 < dVar2) {
                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                      if (dVar2 < (double)DAT_0029f714) {
                        dVar2 = dVar2 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar2) {
                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar2);
                        }
                        uVar12 = (ushort)(local_e4 << 0xc);
                      }
                      else {
                        uVar12 = 0xf000;
                      }
                    }
                  }
                  if (0.0 < dVar47) {
                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= dVar47) {
                      uVar12 = 0xff00;
                    }
                    else {
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar47) {
                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      else {
                        local_e4 = (uint)(longlong)ROUND(dVar47);
                      }
                      uVar12 = uVar12 | (ushort)(local_e4 << 8);
                    }
                  }
                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);
                  if (0.0 < dVar47) {
                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= dVar47) {
                      uVar12 = 0xfff0;
                    }
                    else {
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar47) {
                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      else {
                        local_e4 = (uint)(longlong)ROUND(dVar47);
                      }
                      uVar12 = uVar12 | (ushort)(local_e4 << 4);
                    }
                  }
                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);
                  if (0.0 < dVar47) {
                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if (dVar47 < (double)DAT_0029f714) {
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if (dVar47 < (double)DAT_0029f134) {
LAB_001d2faa:
                        uVar26 = (ushort)(longlong)ROUND(dVar47);
                      }
                      else {
                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      goto LAB_001d21be;
                    }
LAB_001d2eba:
                    uVar12 = 0xffff;
                  }
                }
                else {
                  uVar12 = 0;
                  if (iVar14 == 2) {
                    if (0.0 < dVar47) {
                      uVar12 = 0xf800;
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if (dVar47 < (double)DAT_0029f714) {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = (ushort)(local_e4 << 0xb);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) {
                        uVar12 = 0xffe0;
                      }
                      else {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = uVar12 | (ushort)(local_e4 << 5);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if (dVar47 < (double)DAT_0029f714) {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;
                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        goto LAB_001d21be;
                      }
                      goto LAB_001d2eba;
                    }
                  }
                  else {
                    uVar12 = 0;
                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {
                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);
                      uVar12 = 0;
                      if (0.0 < dVar2) {
                        dVar2 = dVar2 / (double)DAT_0029f710;
                        if (dVar2 < (double)DAT_0029f714) {
                          dVar2 = dVar2 + (double)DAT_0029f124;
                          if ((double)DAT_0029f134 <= dVar2) {
                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);
                          }
                          else {
                            local_e4 = (uint)(longlong)ROUND(dVar2);
                          }
                          uVar12 = (ushort)(local_e4 << 0xf);
                        }
                        else {
                          uVar12 = 0x8000;
                        }
                      }
                    }
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) {
                        uVar12 = 0xfc00;
                      }
                      else {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = uVar12 | (ushort)(local_e4 << 10);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) {
                        uVar12 = 0xffe0;
                      }
                      else {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = uVar12 | (ushort)(local_e4 << 5);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar47) {
                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      else {
                        uVar26 = (ushort)(longlong)ROUND(dVar47);
                      }
LAB_001d21be:
                      uVar12 = uVar12 | uVar26;
                    }
                  }
                }
                *puVar20 = uVar12;
                iVar19 = iVar19 + iVar40 * 8;
                puVar20 = puVar20 + 1;
              } while (puVar20 != puVar32);
            }
            if (uVar17 != iVar22 * 2 &&
                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {
              puVar20 = puVar32;
              do {
                puVar33 = (ushort *)((int)puVar20 + 1);
                *(char *)puVar20 = '\0';
                puVar20 = puVar33;
              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));
              iVar39 = param_2[7];
            }
            if (param_2[0xccf] == 0) {
              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);
              if (iVar19 == 0) break;
              iVar39 = param_2[7];
            }
            local_14c = local_14c + 1;
            bVar42 = 0xfffffffe < local_104;
            local_104 = local_104 + 1;
            iStack_100 = iStack_100 + (uint)bVar42;
          } while ((int)local_14c < iVar39);
          bVar42 = bVar11 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x18:
        uVar16 = 0;
        local_184._0_4_ = 0;
        local_184._4_4_ = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);
            if (iVar14 == 0) goto LAB_001d1490;
            iVar19 = param_2[6];
            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;
            if (0 < iVar19) {
              iVar39 = 0;
              pcVar38 = pcVar46;
              do {
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                *pcVar38 = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                pcVar46 = pcVar38 + 3;
                pcVar38[1] = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                iVar39 = iVar39 + 1;
                pcVar38[2] = cVar24;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                iVar19 = param_2[6];
                pcVar38 = pcVar46;
              } while (iVar39 < iVar19);
            }
            if (iVar19 * 3 < (int)uVar17) {
              pcVar38 = pcVar46;
              do {
                pcVar30 = pcVar38 + 1;
                *pcVar38 = '\0';
                pcVar38 = pcVar30;
              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);
            }
            iVar14 = param_2[7];
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,
                                        0);
              if (iVar14 == 0) goto LAB_001d1490;
              iVar14 = param_2[7];
            }
            uVar16 = uVar16 + 1;
            bVar42 = 0xfffffffe < (uint)local_184;
            local_184._0_4_ = (uint)local_184 + 1;
            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;
          } while ((int)uVar16 < iVar14);
          bVar42 = bVar11 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x20:
        local_17c = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        iStack_178 = 0;
        local_184._0_4_ = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);
            if (iVar14 == 0) break;
            iVar19 = param_2[7];
            if (0 < param_2[6]) {
              iVar39 = 0;
              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;
              do {
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                *pcVar46 = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                pcVar46[1] = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                pcVar46[2] = cVar24;
                cVar24 = -1;
                if (*(int *)(param_2[0xaa] + 0x34) != 0) {
                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);
                  cVar24 = '\0';
                  if (0.0 < dVar47) {
                    dVar47 = dVar47 / (double)DAT_002a7ff0;
                    if ((double)DAT_002a7ff4 <= dVar47) {
                      cVar24 = -1;
                    }
                    else {
                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                    }
                  }
                }
                pcVar46[3] = cVar24;
                iVar39 = iVar39 + 1;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                pcVar46 = pcVar46 + 4;
              } while (iVar39 < param_2[6]);
              iVar19 = param_2[7];
            }
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",
                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),
                                        iStack_178,iVar19,0);
              if (iVar14 == 0) break;
              iVar19 = param_2[7];
            }
            local_184._0_4_ = (uint)local_184 + 1;
            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;
            local_17c = (byte)iVar14;
            uStack_17b = (undefined1)((uint)iVar14 >> 8);
            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);
            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);
          } while ((int)(uint)local_184 < iVar19);
        }
      }
LAB_001d1490:
      bVar42 = bVar11 != 2;
LAB_001d149a:
      bVar29 = bVar42;
      if (param_2[0xcca] == 0) {
LAB_001d14a8:
        if (iVar13 == 0) goto LAB_001d279e;
LAB_001d14b4:
        local_164 = (char *)(local_128 + -0xe);
        uVar16 = GetStringInfoLength(iVar13);
        local_17c = (byte)uVar16;
        uStack_17b = (undefined1)(uVar16 >> 8);
        uStack_17a = (undefined2)(uVar16 >> 0x10);
        uVar17 = uVar16 & 3;
        if (uVar17 == 0) {
          local_174 = 0;
          local_170 = 0;
        }
        else {
          local_174 = 4 - uVar17;
          local_170 = -(uint)(4 < uVar17);
        }
        local_128 = uVar16 + local_128 + local_174;
      }
      else {
LAB_001d2640:
        dVar47 = (double)bVar11;
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,
                       "   Writing BMP version %.20g datastream",dVar47);
        if (*param_2 == 1) {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",
                         dVar47);
        }
        else {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",
                         dVar47);
        }
        dVar47 = (double)(uint)param_2[8];
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);
        if (param_2[0xa5] == 0) {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);
        }
        else {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);
        }
        dVar47 = (double)uVar7;
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",
                       dVar47);
        if (local_ac == 1) {
          pcVar46 = "   Compression=BI_RLE8";
          uVar45 = 0x8ba;
        }
        else if (local_ac == 0) {
          pcVar46 = "   Compression=BI_RGB";
          uVar45 = 0x8b4;
        }
        else if (local_ac == 3) {
          pcVar46 = "   Compression=BI_BITFIELDS";
          uVar45 = 0x8c0;
        }
        else {
          dVar47 = (double)(ulonglong)local_ac;
          pcVar46 = "   Compression=UNKNOWN (%u)";
          uVar45 = 0x8c6;
        }
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);
        if (local_144 == 0) {
          pcVar46 = "   Number_colors=unspecified";
          uVar45 = 0x8cc;
        }
        else {
          pcVar46 = "   Number_colors=%u";
          dVar47 = (double)(ulonglong)local_144;
          uVar45 = 0x8cf;
        }
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);
        if (iVar13 != 0) goto LAB_001d14b4;
LAB_001d279e:
        local_174 = 0;
        local_170 = 0;
        local_17c = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        local_164 = (char *)0x0;
      }
      WriteBlob(param_2,2);
      WriteBlobLSBLong(param_2,local_128);
      WriteBlobLSBLong(param_2,0);
      WriteBlobLSBLong(param_2,local_c0);
      if (bVar11 == 2) {
        WriteBlobLSBLong(param_2,local_bc);
        local_120 = (short)iVar18;
        WriteBlobLSBSignedShort(param_2,(int)local_120);
        local_11c = (short)iVar28;
        WriteBlobLSBSignedShort(param_2,(int)local_11c);
        WriteBlobLSBShort(param_2,1);
        WriteBlobLSBShort(param_2,uVar7);
        iVar18 = *param_2;
        iVar14 = param_2[0xcca];
      }
      else {
        WriteBlobLSBLong(param_2,local_bc);
        WriteBlobLSBSignedLong(param_2,iVar18);
        WriteBlobLSBSignedLong(param_2,iVar28);
        WriteBlobLSBShort(param_2,1);
        WriteBlobLSBShort(param_2,uVar7);
        WriteBlobLSBLong(param_2,local_ac);
        WriteBlobLSBLong(param_2,local_a8);
        WriteBlobLSBLong(param_2,local_a4);
        WriteBlobLSBLong(param_2,local_a0);
        WriteBlobLSBLong(param_2,local_144);
        WriteBlobLSBLong(param_2,local_144);
        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {
          WriteBlobLSBLong(param_2,local_98);
          WriteBlobLSBLong(param_2,local_94);
          WriteBlobLSBLong(param_2,local_90);
          WriteBlobLSBLong(param_2,local_8c);
          if (iVar13 == 0) {
            WriteBlobLSBLong(param_2,0x73524742);
          }
          else {
            WriteBlobLSBLong(param_2,0x4d424544);
          }
          dVar47 = *(double *)(param_2 + 0x5d);
          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {
            local_e4 = 0;
            param_2[0x5d] = 0;
            param_2[0x5e] = 0;
          }
          else {
            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);
          }
          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {
            param_2[0x5f] = 0;
            param_2[0x60] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {
            param_2[99] = 0;
            param_2[100] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {
            param_2[0x65] = 0;
            param_2[0x66] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {
            param_2[0x69] = 0;
            param_2[0x6a] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {
            param_2[0x6b] = 0;
            param_2[0x6c] = 0;
          }
          if ((1.0 < local_38) || (local_38 <= 0.0)) {
            local_38 = 0.0;
          }
          dVar47 = local_38;
          if ((1.0 < local_30) || (local_30 <= 0.0)) {
            local_30 = 0.0;
          }
          dVar2 = local_30;
          if ((1.0 < local_28) || (local_28 <= 0.0)) {
            local_28 = 0.0;
          }
          dVar9 = local_28;
          WriteBlobLSBLong(param_2,local_e4);
          dVar1 = (double)DAT_002cc820;
          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))
                                 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *
                                 dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))
                                 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          dVar1 = (double)DAT_002b2420;
          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          if ((param_2[0x75] != 0) || (bVar41)) {
            uVar16 = param_2[0x75] - 1;
            uVar45 = 0;
            if (uVar16 < 4) {
              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);
            }
            WriteBlobLSBLong(param_2,uVar45);
            WriteBlobLSBLong(param_2,local_164);
            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174
                            );
            WriteBlobLSBLong(param_2,0);
          }
        }
        iVar18 = *param_2;
        iVar14 = param_2[0xcca];
      }
      if (iVar18 == 2) {
        if (iVar14 != 0) {
          local_184 = (ulonglong)(uint)param_2[9];
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",
                         (double)local_184);
        }
        bVar25 = (byte)local_ae;
        iVar14 = 1 << (bVar25 & 0x1f);
        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);
        if (puVar21 == (undefined2 *)0x0) {
          RelinquishVirtualMemory(local_124);
          ThrowMagickException
                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",
                     "`%s\'",param_2 + 0xc6);
          piVar5 = (int *)param_1[3];
          while (piVar8 = param_2, piVar5 != (int *)0x0) {
            piVar5 = (int *)piVar8[0xccf];
            param_2 = piVar5;
            piVar35 = piVar8;
          }
LAB_001d3a2a:
          CloseBlob(piVar35);
          iVar13 = 0;
          goto LAB_001d3a3a;
        }
        uVar16 = local_9c;
        if (param_2[9] <= (int)local_9c) {
          uVar16 = param_2[9];
        }
        puVar23 = puVar21;
        if ((int)uVar16 < 1) {
          iVar18 = 0;
        }
        else {
          iVar28 = 0;
          iVar18 = 0;
          do {
            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);
            uVar31 = 0;
            if (0.0 < dVar47) {
              dVar47 = dVar47 / (double)DAT_002a7ff0;
              uVar31 = 0xff;
              if (dVar47 < (double)DAT_002a7ff4) {
                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)puVar23 = uVar31;
            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);
            uVar31 = 0;
            if (0.0 < dVar47) {
              dVar47 = dVar47 / (double)DAT_002a7ff0;
              uVar31 = 0xff;
              if (dVar47 < (double)DAT_002a7ff4) {
                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)((int)puVar23 + 1) = uVar31;
            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);
            uVar31 = 0;
            if (0.0 < dVar47) {
              dVar47 = dVar47 / (double)DAT_002a7ff0;
              uVar31 = 0xff;
              if (dVar47 < (double)DAT_002a7ff4) {
                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)(puVar23 + 1) = uVar31;
            if (bVar29) {
              *(undefined1 *)((int)puVar23 + 3) = 0;
              puVar23 = puVar23 + 2;
            }
            else {
              puVar23 = (undefined2 *)((int)puVar23 + 3);
            }
            iVar18 = iVar18 + 1;
            iVar28 = iVar28 + 0x50;
            uVar16 = local_9c;
            if (param_2[9] <= (int)local_9c) {
              uVar16 = param_2[9];
            }
          } while (iVar18 < (int)uVar16);
        }
        if (iVar18 < iVar14) {
          do {
            while( true ) {
              *(undefined1 *)(puVar23 + 1) = 0;
              *puVar23 = 0;
              if (!bVar29) break;
              iVar18 = iVar18 + 1;
              *(undefined1 *)((int)puVar23 + 3) = 0;
              puVar23 = puVar23 + 2;
              if (iVar18 == iVar14) goto LAB_001d3985;
            }
            iVar18 = iVar18 + 1;
            puVar23 = (undefined2 *)((int)puVar23 + 3);
          } while (iVar18 != iVar14);
        }
LAB_001d3985:
        if (bVar11 == 2) {
          iVar14 = 3;
        }
        else {
          iVar14 = 4;
        }
        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));
        RelinquishMagickMemory(puVar21);
        iVar14 = param_2[0xcca];
      }
      sVar37 = local_a8;
      if (iVar14 != 0) {
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);
      }
      WriteBlob(param_2,sVar37);
      if (iVar13 != 0) {
        if (param_2[0xcca] != 0) {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",
                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +
                         (double)(short)local_174);
        }
        GetStringInfoDatum(iVar13);
        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));
        if (local_170 != 0 || local_174 != 0) {
          WriteBlob(param_2,local_174);
        }
      }
      RelinquishVirtualMemory(local_124);
      iVar13 = GetNextImageInList(param_2);
      if (iVar13 == 0) {
LAB_001d3caf:
        CloseBlob(param_2);
        iVar13 = 1;
        goto LAB_001d3a3a;
      }
      param_2 = (int *)SyncNextImageInList(param_2);
      uVar17 = local_10c + 1;
      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);
      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);
      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;
      uVar16 = param_2[1] - 3;
      local_10c = uVar17;
      local_108 = iVar14;
      if (0x1e < uVar16) break;
LAB_001d1cae:
    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x00054244
ADD ESI,0x208348
PUSH EBX
SUB ESP,0x17c
MOV EDI,dword ptr [ESP + 0x198]
MOV EAX,dword ptr [ESP + 0x190]
MOV EBP,dword ptr [ESP + 0x194]
MOV dword ptr [ESP + 0x38],EDI
MOV EDI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x16c],EDI
XOR EDI,EDI
MOV dword ptr [ESP + 0x74],EAX
TEST EAX,EAX
JZ 0x001d4074
MOV EAX,dword ptr [ESP + 0x74]
CMP dword ptr [EAX + 0x31f4],0xabacadab
JNZ 0x001d4053
TEST EBP,EBP
JZ 0x001d4032
CMP dword ptr [EBP + 0x3344],0xabacadab
JNZ 0x001d409a
MOV EDI,dword ptr [EBP + 0x3328]
TEST EDI,EDI
JNZ 0x001d3d09
MOV EBX,dword ptr [ESP + 0x38]
TEST EBX,EBX
JZ 0x001d4011
MOV EAX,dword ptr [ESP + 0x38]
CMP dword ptr [EAX + 0x1c],0xabacadab
JNZ 0x001d40c7
PUSH dword ptr [ESP + 0x38]
PUSH 0x4
MOV EBX,ESI
PUSH EBP
MOV EDI,dword ptr [ESP + 0x80]
PUSH EDI
CALL 0x00032230
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d3a3a
LEA EAX,[ESI + 0xffec927a]
SUB ESP,0x8
ADD EDI,0x1f0
PUSH EAX
PUSH EDI
CALL 0x000326f0
ADD ESP,0x10
MOV dword ptr [ESP + 0x3c],0x2
TEST EAX,EAX
JNZ 0x001d3bf4
LEA EAX,[ESI + 0xffef311f]
SUB ESP,0x8
MOV EBX,ESI
PUSH EAX
PUSH dword ptr [ESP + 0x80]
CALL 0x00032590
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x001d0e46
SUB ESP,0x8
PUSH EAX
LEA EAX,[ESI + 0xffef312a]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x6b8
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH 0x10
CALL 0x000323b0
LEA EAX,[ESI + 0xffef3136]
ADD ESP,0x18
PUSH EAX
PUSH EDI
CALL 0x000326f0
POP EDX
POP ECX
TEST EAX,EAX
MOV EAX,0x2
CMOVNZ EAX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x44],EAX
LEA EAX,[ESI + 0xffef313b]
PUSH EAX
PUSH EDI
CALL 0x000326f0
POP EDX
POP ECX
TEST EAX,EAX
MOV EAX,0x3
CMOVNZ EAX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x44],EAX
LEA EAX,[ESI + 0xffef3140]
PUSH EAX
PUSH EDI
CALL 0x000326f0
ADD ESP,0x10
TEST EAX,EAX
MOV EAX,0x4
CMOVNZ EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x3c],EAX
SUB ESP,0xc
MOV EBX,ESI
PUSH EBP
CALL 0x00032180
ADD ESP,0x10
MOV dword ptr [ESP + 0xa0],EAX
LEA EAX,[ESP + 0xc8]
MOV dword ptr [ESP + 0x98],EAX
LEA EAX,[ESI + 0xffecf1ca]
MOV dword ptr [ESP + 0x9c],EAX
MOV EAX,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x80],0x0
MOV dword ptr [ESP + 0x84],0x0
SUB EAX,0x3
CMP EAX,0x1e
JBE 0x001d1cae
NOP
LEA ESI,[ESI]
SUB ESP,0x4
MOV EBX,ESI
PUSH dword ptr [ESP + 0x3c]
PUSH 0x17
PUSH EBP
CALL 0x00032530
ADD ESP,0x10
XOR EAX,EAX
MOV EDI,dword ptr [ESP + 0x98]
MOV ECX,0x29
CMP dword ptr [ESP + 0x3c],0x2
STOSD.REP ES:EDI
JNZ 0x001d3158
MOV dword ptr [ESP + 0xc4],0x1a
MOV dword ptr [ESP + 0x30],0x1a
MOV dword ptr [ESP + 0xf4],0xff0000
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0xf8],0xff00
MOV dword ptr [ESP + 0xfc],0xff
MOV dword ptr [ESP + 0x100],0xff000000
MOV dword ptr [ESP + 0xcc],EAX
MOV EAX,dword ptr [EBP]
CMP EAX,0x2
JZ 0x001d3340
CMP EAX,0x1
JZ 0x001d3250
MOV EAX,dword ptr [EBP + 0x24]
CMP EAX,0x2
JA 0x001d36a0
MOV EDI,dword ptr [ESP + 0x74]
MOV ECX,0x1
MOV word ptr [ESP + 0xde],CX
CMP dword ptr [EDI],0x13
JZ 0x001d36c0
MOVZX ECX,word ptr [ESP + 0xde]
MOV EDI,0x1
SHL EDI,CL
MOV word ptr [ESP + 0x10],CX
MOV dword ptr [ESP + 0x48],EDI
MOV EDI,dword ptr [ESP + 0x48]
MOV EBX,dword ptr [EBP + 0x294]
MOV dword ptr [ESP + 0xf0],EDI
TEST EBX,EBX
JNZ 0x001d3230
CMP EAX,dword ptr [ESP + 0x48]
JA 0x001d3230
MOV EAX,0x3
SHL EAX,CL
ADD dword ptr [ESP + 0x30],EAX
CMP dword ptr [ESP + 0x3c],0x2
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0xc4],EAX
MOV dword ptr [ESP + 0xcc],EAX
JZ 0x001d0fcb
MOV EDI,dword ptr [ESP + 0x48]
ADD EAX,EDI
MOV dword ptr [ESP + 0x30],EAX
MOV dword ptr [ESP + 0xc4],EAX
MOV dword ptr [ESP + 0xcc],EAX
MOVZX EAX,word ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x8],0x0
IMUL EAX,dword ptr [EBP + 0x18]
SUB ESP,0x8
MOV EBX,ESI
MOV dword ptr [ESP + 0xd0],0x0
ADD EAX,0x1f
SHR EAX,0x5
SHL EAX,0x2
MOV dword ptr [ESP + 0x20],EAX
PUSH dword ptr [ESP + 0xa4]
PUSH EBP
CALL 0x00031c60
MOV EDI,dword ptr [EBP + 0x1d4]
MOV dword ptr [ESP + 0x70],EAX
ADD ESP,0x10
TEST EAX,EAX
SETNZ byte ptr [ESP + 0xb1]
MOVZX EBX,byte ptr [ESP + 0xb1]
MOV dword ptr [ESP + 0x90],0x1
TEST EDI,EDI
SETNZ AL
OR AL,BL
JZ 0x001d3ab4
CMP dword ptr [ESP + 0x3c],0x2
JZ 0x001d3370
CMP dword ptr [ESP + 0x3c],0x3
JZ 0x001d3410
MOV EDI,dword ptr [ESP + 0x90]
OR EDI,dword ptr [EBP + 0x294]
JZ 0x001d3410
TEST AL,AL
JZ 0x001d3e8b
MOV dword ptr [ESP + 0xd0],0x7c
MOV EAX,0x54
ADD dword ptr [ESP + 0x30],EAX
MOV dword ptr [ESP + 0x3c],0x4
ADD dword ptr [ESP + 0xcc],EAX
MOV EAX,dword ptr [EBP + 0x18]
MOV EBX,0x1
MOV EDI,dword ptr [ESP + 0x18]
MOV word ptr [ESP + 0xdc],BX
MOV dword ptr [ESP + 0xe8],0xb6d
MOV dword ptr [ESP + 0x6c],EAX
MOV dword ptr [ESP + 0xd4],EAX
MOV EAX,dword ptr [EBP + 0x1c]
MOV dword ptr [ESP + 0xec],0xb6d
IMUL EDI,EAX
MOV dword ptr [ESP + 0x70],EAX
MOV dword ptr [ESP + 0xd8],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0xe4],EDI
ADD EAX,EDI
MOV dword ptr [ESP + 0x64],EAX
MOV dword ptr [ESP + 0xc4],EAX
MOV EAX,dword ptr [EBP + 0x1dc]
CMP EAX,0x1
JBE 0x001d3380
CMP EAX,0x2
JNZ 0x001d1177
FLD dword ptr [ESI + 0xffec671c]
FLD qword ptr [EBP + 0x1f0]
FNSTCW word ptr [ESP + 0xb6]
FMUL ST1
MOVZX EAX,word ptr [ESP + 0xb6]
OR AH,0xc
MOV word ptr [ESP + 0xb4],AX
FLDCW word ptr [ESP + 0xb4]
FISTP qword ptr [ESP + 0xa8]
FLDCW word ptr [ESP + 0xb6]
MOV EAX,dword ptr [ESP + 0xa8]
FMUL qword ptr [EBP + 0x1f8]
FLDCW word ptr [ESP + 0xb4]
FISTP qword ptr [ESP + 0xa8]
FLDCW word ptr [ESP + 0xb6]
MOV dword ptr [ESP + 0xe8],EAX
MOV EAX,dword ptr [ESP + 0xa8]
MOV dword ptr [ESP + 0xec],EAX
MOV EAX,dword ptr [ESP + 0x48]
SUB ESP,0x8
MOV dword ptr [ESP + 0x10c],EAX
MOV EAX,dword ptr [ESP + 0x74]
MOV EBX,dword ptr [ESP + 0x20]
ADD EAX,0x100
CMP EAX,EBX
CMOVC EAX,EBX
MOV EBX,ESI
PUSH EAX
PUSH dword ptr [ESP + 0x7c]
CALL 0x00032050
MOV dword ptr [ESP + 0x78],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d3f12
SUB ESP,0xc
PUSH dword ptr [ESP + 0x74]
CALL 0x00032e60
MOV dword ptr [ESP + 0x34],EAX
ADD ESP,0xc
PUSH EDI
PUSH 0x0
PUSH EAX
CALL 0x000310a0
MOVZX EDI,word ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x8c],EDI
ADD ESP,0x10
CMP DI,0x20
JA 0x001d23a7
MOV EAX,dword ptr [ESI + EDI*0x4 + 0xffef3664]
ADD EAX,ESI
JMP EAX
MOV EAX,dword ptr [EBP + 0x3328]
TEST EAX,EAX
JNZ 0x001d2640
MOV EDI,dword ptr [ESP + 0x60]
TEST EDI,EDI
JZ 0x001d279e
MOV EAX,dword ptr [ESP + 0x64]
XOR EDX,EDX
MOV EBX,ESI
ADD EAX,-0xe
ADC EDX,-0x1
MOV dword ptr [ESP + 0x28],EAX
SUB ESP,0xc
MOV dword ptr [ESP + 0x38],EDX
PUSH EDI
CALL 0x000335d0
MOV dword ptr [ESP + 0x24],0x0
MOV EDI,EAX
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
AND EDI,0x3
JZ 0x001d37c0
XOR EBX,EBX
MOV dword ptr [ESP + 0x8],EDI
MOV ECX,0x4
SUB ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xc],0x0
SBB EBX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x18],ECX
MOV EDX,ECX
MOV dword ptr [ESP + 0x1c],EBX
ADD EAX,dword ptr [ESP + 0x64]
ADD EAX,EDX
MOV dword ptr [ESP + 0x64],EAX
MOV dword ptr [ESP + 0xc4],EAX
LEA EAX,[ESI + 0xffec951a]
SUB ESP,0x4
MOV EBX,ESI
PUSH EAX
PUSH 0x2
PUSH EBP
CALL 0x00030660
POP ECX
POP EDI
PUSH dword ptr [ESP + 0x6c]
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH 0x0
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
PUSH dword ptr [ESP + 0xd4]
PUSH EBP
CALL 0x00030ef0
MOV EAX,dword ptr [ESP + 0xe0]
ADD ESP,0x10
CMP dword ptr [ESP + 0x3c],0x2
JZ 0x001d3430
SUB ESP,0x8
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EDI
POP EAX
PUSH dword ptr [ESP + 0x74]
PUSH EBP
CALL 0x00032af0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x78]
PUSH EBP
CALL 0x00032af0
POP ECX
POP EDI
PUSH 0x1
PUSH EBP
CALL 0x00030890
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x84]
PUSH EBP
CALL 0x00030890
POP ECX
POP EDI
PUSH dword ptr [ESP + 0xe8]
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0xec]
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
PUSH dword ptr [ESP + 0xf0]
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0xf4]
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
MOV EDI,dword ptr [ESP + 0x50]
PUSH EDI
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH EDI
PUSH EBP
CALL 0x00030ef0
ADD ESP,0x10
CMP dword ptr [ESP + 0x3c],0x4
JNZ 0x001d1b7a
MOV EAX,dword ptr [ESP + 0x90]
OR EAX,dword ptr [EBP + 0x294]
JZ 0x001d1b7a
SUB ESP,0x8
PUSH dword ptr [ESP + 0xfc]
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x100]
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
PUSH dword ptr [ESP + 0x104]
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x108]
PUSH EBP
CALL 0x00030ef0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x60]
TEST ECX,ECX
JZ 0x001d3b16
SUB ESP,0x8
PUSH 0x4d424544
PUSH EBP
CALL 0x00030ef0
ADD ESP,0x10
FLD1
FLD qword ptr [EBP + 0x174]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d169c
FLDZ
FXCH
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d3b40
FSTP ST0
JMP 0x001d169e
FSTP ST0
FLDZ
XOR EAX,EAX
FSTP qword ptr [EBP + 0x174]
FLD1
FLD qword ptr [EBP + 0x17c]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2aee
FLDZ
FXCH
FUCOMIP ST0,ST1
FSTP ST0
JBE 0x001d2af0
FLD1
FLD qword ptr [EBP + 0x18c]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2adf
FLDZ
FXCH
FUCOMIP ST0,ST1
FSTP ST0
JBE 0x001d2ae1
FLD1
FLD qword ptr [EBP + 0x194]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2ad0
FLDZ
FXCH
FUCOMIP ST0,ST1
FSTP ST0
JBE 0x001d2ad2
FLD1
FLD qword ptr [EBP + 0x1a4]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2ac1
FLDZ
FXCH
FUCOMIP ST0,ST1
FSTP ST0
JBE 0x001d2ac3
FLD1
FLD qword ptr [EBP + 0x1ac]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2ab2
FLDZ
FXCH
FUCOMIP ST0,ST1
FSTP ST0
JBE 0x001d2ab4
FLD1
FLD qword ptr [ESP + 0x154]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2a9c
FLDZ
FXCH
FUCOMI ST0,ST1
FSTP ST1
JBE 0x001d2aa0
FLD1
FLD qword ptr [ESP + 0x15c]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2a86
FLDZ
FXCH
FUCOMI ST0,ST1
FSTP ST1
JBE 0x001d2a8a
FLD1
FLD qword ptr [ESP + 0x164]
FUCOMI ST0,ST1
FSTP ST1
JA 0x001d2a70
FLDZ
FXCH
FUCOMI ST0,ST1
FSTP ST1
JBE 0x001d2a74
FSTP qword ptr [ESP + 0x58]
SUB ESP,0x8
MOV EBX,ESI
FSTP qword ptr [ESP + 0x58]
FSTP qword ptr [ESP + 0x50]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
FLD dword ptr [ESI + 0xffef3820]
FST qword ptr [ESP + 0x10]
FLD qword ptr [EBP + 0x17c]
FNSTCW word ptr [ESP + 0xbe]
FMULP
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EAX
FLD qword ptr [EBP + 0x174]
POP EDX
FADD qword ptr [EBP + 0x17c]
FNSTCW word ptr [ESP + 0xbe]
FLD1
MOVZX EAX,word ptr [ESP + 0xbe]
FSUBR ST1,ST0
FSTP qword ptr [ESP + 0x38]
OR AH,0xc
FMUL qword ptr [ESP + 0x10]
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
FLD qword ptr [ESP + 0x10]
FMUL qword ptr [EBP + 0x18c]
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
FLD qword ptr [ESP + 0x10]
FMUL qword ptr [EBP + 0x194]
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
FLD qword ptr [EBP + 0x18c]
FADD qword ptr [EBP + 0x194]
FLD qword ptr [ESP + 0x38]
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
FSUBRP
FMUL qword ptr [ESP + 0x10]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
FLD qword ptr [ESP + 0x10]
FMUL qword ptr [EBP + 0x1a4]
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
FLD qword ptr [ESP + 0x10]
FMUL qword ptr [EBP + 0x1ac]
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
FLD qword ptr [EBP + 0x1a4]
FADD qword ptr [EBP + 0x1ac]
FLD qword ptr [ESP + 0x38]
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
FSUBRP
FMUL qword ptr [ESP + 0x10]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
FLD dword ptr [ESI + 0xffed9420]
FLD qword ptr [ESP + 0x50]
FMUL ST1
FXCH
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
FSTP qword ptr [ESP + 0x10]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
FLD qword ptr [ESP + 0x10]
FLD qword ptr [ESP + 0x58]
FMULP
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
FLD qword ptr [ESP + 0x10]
FLD qword ptr [ESP + 0x60]
FMULP
FNSTCW word ptr [ESP + 0xbe]
MOVZX EAX,word ptr [ESP + 0xbe]
OR AH,0xc
MOV word ptr [ESP + 0xbc],AX
FLDCW word ptr [ESP + 0xbc]
FISTP qword ptr [ESP + 0xb0]
FLDCW word ptr [ESP + 0xbe]
MOV EAX,dword ptr [ESP + 0xb0]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
MOV EAX,dword ptr [EBP + 0x1d4]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001d1b33
CMP byte ptr [ESP + 0xb1],0x0
JZ 0x001d1b7a
SUB EAX,0x1
XOR EDX,EDX
CMP EAX,0x3
JA 0x001d1b44
MOV EDX,dword ptr [ESI + EAX*0x4 + 0xffef3784]
SUB ESP,0x8
MOV EBX,ESI
PUSH EDX
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x30]
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
MOV EAX,dword ptr [ESP + 0x18]
ADD EAX,dword ptr [ESP + 0x20]
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP EAX
POP EDX
PUSH 0x0
PUSH EBP
CALL 0x00030ef0
ADD ESP,0x10
CMP dword ptr [EBP],0x2
MOV EAX,dword ptr [EBP + 0x3328]
JZ 0x001d3482
MOV EDI,dword ptr [ESP + 0xe4]
TEST EAX,EAX
JNZ 0x001d36f0
SUB ESP,0x4
MOV EBX,ESI
PUSH dword ptr [ESP + 0x28]
PUSH EDI
PUSH EBP
CALL 0x00030660
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x60]
TEST EAX,EAX
JZ 0x001d1c05
MOV EAX,dword ptr [EBP + 0x3328]
TEST EAX,EAX
JNZ 0x001d37d7
SUB ESP,0xc
MOV EBX,ESI
PUSH dword ptr [ESP + 0x6c]
CALL 0x00033130
ADD ESP,0xc
PUSH EAX
PUSH dword ptr [ESP + 0x18]
PUSH EBP
CALL 0x00030660
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,EBX
OR EDX,ECX
JZ 0x001d1c05
LEA EAX,[ESI + 0xffef3660]
SUB ESP,0x4
MOV EBX,ESI
PUSH EAX
PUSH ECX
PUSH EBP
CALL 0x00030660
ADD ESP,0x10
SUB ESP,0xc
MOV EBX,ESI
PUSH dword ptr [ESP + 0x74]
CALL 0x00031d50
MOV dword ptr [ESP],EBP
CALL 0x000319e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d3caf
SUB ESP,0xc
PUSH EBP
CALL 0x00031b80
MOV ECX,dword ptr [ESP + 0x90]
MOV EBX,dword ptr [ESP + 0x94]
MOV EBP,EAX
MOV EAX,ECX
ADD EAX,0x1
MOV EDX,EBX
ADC EDX,0x0
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
POP EDI
XOR EDX,EDX
POP EAX
MOV EAX,dword ptr [ESP + 0xa8]
PUSH EDX
PUSH EAX
LEA EAX,[ESI + 0xffef2e09]
PUSH EBX
MOV EBX,ESI
PUSH ECX
PUSH EAX
PUSH EBP
CALL 0x00033840
ADD ESP,0x20
TEST EAX,EAX
JZ 0x001d3caf
MOV EAX,dword ptr [ESP + 0x74]
MOV ECX,dword ptr [EAX + 0xc]
TEST ECX,ECX
JZ 0x001d3caf
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x80],EAX
MOV EAX,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x84],EDX
SUB EAX,0x3
CMP EAX,0x1e
JA 0x001d0ea0
MOV EDX,0x403c0001
BT EDX,EAX
JC 0x001d0eb4
JMP 0x001d0ea0
CMP dword ptr [ESP + 0x3c],0x2
SETNZ AL
CMP word ptr [ESP + 0x10],0x8
SETZ DL
AND DL,AL
MOV byte ptr [ESP + 0x40],DL
JZ 0x001d3ad9
MOV EAX,dword ptr [ESP + 0x74]
CMP dword ptr [EAX],0x10
JZ 0x001d149a
MOV EAX,dword ptr [EBP + 0x1c]
SUB ESP,0x8
MOV EBX,ESI
ADD EAX,0x2
PUSH EAX
MOV EAX,dword ptr [ESP + 0x24]
LEA EAX,[EAX + EAX*0x1 + 0x6]
PUSH EAX
CALL 0x00032050
MOV dword ptr [ESP + 0x98],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d3fa8
SUB ESP,0xc
PUSH dword ptr [ESP + 0x94]
CALL 0x00032e60
MOV dword ptr [ESP + 0xa4],EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0xd4],EAX
ADD ESP,0x10
CMP dword ptr [EBP + 0x3344],0xabacadab
JNZ 0x001d41eb
MOV EDI,dword ptr [EBP + 0x3328]
TEST EDI,EDI
JZ 0x001d246c
LEA EAX,[EBP + 0x318]
SUB ESP,0x8
PUSH EAX
LEA EAX,[ESI + 0xffedde4e]
PUSH EAX
LEA EAX,[ESI + 0xffef37e4]
PUSH 0x195
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH 0x8000
CALL 0x000323b0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x94]
TEST EAX,EAX
JZ 0x001d413c
MOV EBX,dword ptr [EBP + 0x1c]
TEST EBX,EBX
JLE 0x001d3f98
MOV dword ptr [ESP + 0x28],EAX
LEA EAX,[ESI + 0xffef2dfe]
MOV dword ptr [ESP + 0x58],0x0
MOV dword ptr [ESP + 0x5c],0x0
MOV dword ptr [ESP + 0x50],0x0
MOV dword ptr [ESP + 0x78],EAX
MOV dword ptr [ESP + 0x64],EBP
MOV ECX,dword ptr [ESP + 0x18]
XOR EDI,EDI
MOV EAX,dword ptr [ESP + 0x28]
TEST ECX,ECX
JZ 0x001d2581
LEA EAX,[EDI + 0x1]
CMP EAX,dword ptr [ESP + 0x18]
JGE 0x001d2566
NOP
MOV EDX,dword ptr [ESP + 0x24]
MOVZX EBX,byte ptr [EDX]
MOV byte ptr [ESP + 0x10],BL
CMP BL,byte ptr [EDX + 0x1]
JNZ 0x001d3c69
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x8],EDI
MOV EBP,dword ptr [ESP + 0x18]
LEA EDX,[EAX + 0x2]
MOV EAX,0x1
SUB EBP,EDI
JMP 0x001d251e
CMP EAX,0xff
JZ 0x001d3c3d
MOV ECX,EDX
MOVZX EBX,byte ptr [ESP + 0x10]
LEA EDX,[EDX + 0x1]
CMP byte ptr [EDX + -0x1],BL
JNZ 0x001d3c20
MOV EDI,dword ptr [ESP + 0x8]
ADD EAX,0x1
ADD EDI,EAX
CMP EAX,EBP
JNZ 0x001d2500
MOV EBX,dword ptr [ESP + 0x24]
MOV EDX,EAX
LEA ECX,[EBX + EAX*0x1]
MOV EBX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x24]
MOV byte ptr [EBX],DL
ADD EBX,0x2
CMP EDI,dword ptr [ESP + 0x18]
MOVZX EAX,byte ptr [EAX]
MOV dword ptr [ESP + 0x28],EBX
MOV byte ptr [EBX + -0x1],AL
JGE 0x001d3c30
LEA EAX,[EDI + 0x1]
CMP EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x24],ECX
JL 0x001d24d0
MOV EAX,dword ptr [ESP + 0x28]
MOV EDI,dword ptr [ESP + 0x24]
MOV byte ptr [EAX],0x1
ADD EAX,0x2
MOVZX EDX,byte ptr [EDI]
ADD EDI,0x1
MOV dword ptr [ESP + 0x24],EDI
MOV byte ptr [EAX + -0x1],DL
LEA EDI,[EAX + 0x2]
SUB ESP,0x8
XOR EBX,EBX
MOV dword ptr [ESP + 0x30],EDI
MOV EDI,dword ptr [ESP + 0x6c]
XOR EDX,EDX
MOV word ptr [EAX],BX
MOV EBX,ESI
MOV EAX,dword ptr [EDI + 0x1c]
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x6c]
PUSH dword ptr [ESP + 0x90]
PUSH EDI
CALL 0x00033840
ADD ESP,0x20
TEST EAX,EAX
JZ 0x001d25d5
ADD dword ptr [ESP + 0x50],0x1
ADD dword ptr [ESP + 0x58],0x1
MOV EAX,dword ptr [ESP + 0x50]
ADC dword ptr [ESP + 0x5c],0x0
CMP EAX,dword ptr [EDI + 0x1c]
JL 0x001d24b0
MOV EBP,dword ptr [ESP + 0x64]
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,0x100
SUB ESP,0xc
MOV EBX,ESI
MOV EDI,dword ptr [ESP + 0xa0]
MOV word ptr [EAX],DX
ADD EAX,0x2
SUB EAX,EDI
MOV dword ptr [ESP + 0xf0],EAX
ADD EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x70],EAX
MOV dword ptr [ESP + 0xd0],EAX
PUSH dword ptr [ESP + 0x74]
CALL 0x00031d50
MOV dword ptr [ESP + 0xf0],0x1
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0x24],EDI
MOV dword ptr [ESP + 0x68],EAX
MOV EAX,dword ptr [EBP + 0x3328]
TEST EAX,EAX
JZ 0x001d14a8
LEA EAX,[ESI + 0xffef354c]
SUB ESP,0xc
MOV EBX,ESI
FILD dword ptr [ESP + 0x48]
LEA EDI,[ESI + 0xffef37fc]
FSTP qword ptr [ESP]
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x89e
PUSH EDI
MOV dword ptr [ESP + 0x20],EAX
PUSH EAX
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
CMP dword ptr [EBP],0x1
JZ 0x001d3ae2
LEA EAX,[ESI + 0xffef3192]
SUB ESP,0xc
PUSH EAX
PUSH 0x8a4
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
MOV EAX,dword ptr [EBP + 0x20]
SUB ESP,0xc
XOR EDX,EDX
MOV EBX,ESI
MOV dword ptr [ESP + 0x20],EDX
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[ESI + 0xffef31af]
FILD qword ptr [ESP + 0x1c]
FSTP qword ptr [ESP]
PUSH EAX
PUSH 0x8a6
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
MOV EAX,dword ptr [EBP + 0x294]
ADD ESP,0x20
TEST EAX,EAX
JZ 0x001d3a91
LEA EAX,[ESI + 0xffef31c4]
SUB ESP,0xc
PUSH EAX
PUSH 0x8a9
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
LEA EAX,[ESI + 0xffef31e7]
SUB ESP,0xc
MOV EBX,ESI
FILD dword ptr [ESP + 0x88]
FSTP qword ptr [ESP]
PUSH EAX
PUSH 0x8ae
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
MOV EAX,dword ptr [ESP + 0x100]
ADD ESP,0x20
CMP EAX,0x1
JZ 0x001d3c9b
JC 0x001d3c87
CMP EAX,0x3
JZ 0x001d3b2c
SUB ESP,0x8
PUSH EAX
LEA EAX,[ESI + 0xffef324c]
PUSH EAX
PUSH 0x8c6
PUSH EDI
MOV EBX,ESI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x48]
TEST EAX,EAX
JNZ 0x001d3c51
LEA EAX,[ESI + 0xffef3268]
SUB ESP,0xc
PUSH EAX
PUSH 0x8cc
PUSH EDI
MOV EBX,ESI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
MOV EDI,dword ptr [ESP + 0x60]
TEST EDI,EDI
JNZ 0x001d14b4
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x1c],0x0
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESP + 0x2c],0x0
JMP 0x001d1523
FSTP ST0
JMP 0x001d2a76
FSTP ST0
FLDZ
FSTP qword ptr [ESP + 0x164]
FLDZ
JMP 0x001d17ab
FSTP ST0
JMP 0x001d2a8c
FSTP ST0
FLDZ
FSTP qword ptr [ESP + 0x15c]
FLDZ
JMP 0x001d178a
FSTP ST0
JMP 0x001d2aa2
FSTP ST0
FLDZ
FSTP qword ptr [ESP + 0x154]
FLDZ
JMP 0x001d1769
FSTP ST0
FLDZ
FSTP qword ptr [EBP + 0x1ac]
JMP 0x001d1748
FSTP ST0
FLDZ
FSTP qword ptr [EBP + 0x1a4]
JMP 0x001d1728
FSTP ST0
FLDZ
FSTP qword ptr [EBP + 0x194]
JMP 0x001d1708
FSTP ST0
FLDZ
FSTP qword ptr [EBP + 0x18c]
JMP 0x001d16e8
FSTP ST0
FLDZ
FSTP qword ptr [EBP + 0x17c]
JMP 0x001d16c8
MOV dword ptr [ESP + 0xc4],0x36
MOV dword ptr [ESP + 0x30],0x36
JMP 0x001d0ee2
SUB ESP,0x4
MOV EBX,ESI
PUSH dword ptr [ESP + 0x3c]
PUSH 0x1
PUSH EBP
CALL 0x00030bc0
ADD ESP,0x10
CMP dword ptr [EBP],0x1
JNZ 0x001d0fcb
NOP
MOV dword ptr [ESP + 0xf0],0x0
LEA EAX,[ESI + 0xffef3145]
SUB ESP,0x8
MOV EBX,ESI
PUSH EAX
PUSH dword ptr [ESP + 0x80]
CALL 0x00032590
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x001d3d41
MOV ECX,dword ptr [EBP + 0x294]
TEST ECX,ECX
JZ 0x001d3b81
LEA EAX,[ESI + 0xffef3151]
SUB ESP,0x4
PUSH 0x8
PUSH EAX
PUSH EDI
CALL 0x00031370
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d3ea0
LEA EAX,[ESI + 0xffef315a]
SUB ESP,0x4
PUSH 0x8
PUSH EAX
PUSH EDI
CALL 0x00031370
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001d3f6c
MOV dword ptr [ESP + 0xf4],0x7c00
MOV dword ptr [ESP + 0xf8],0x3e0
MOV dword ptr [ESP + 0xfc],0x1f
MOV dword ptr [ESP + 0x100],0x8000
MOV dword ptr [ESP + 0x8],0x4
MOV EAX,0x10
MOV EDX,0x10
MOV dword ptr [ESP + 0xe0],0x3
MOV word ptr [ESP + 0xde],AX
MOV EAX,dword ptr [ESP + 0xc4]
MOV dword ptr [ESP + 0x48],0x0
MOV word ptr [ESP + 0x10],DX
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,0x10
JMP 0x001d0fd8
MOV EAX,dword ptr [EBP + 0x24]
CMP EAX,0x100
JBE 0x001d0f31
SUB ESP,0x4
MOV EBX,ESI
PUSH dword ptr [ESP + 0x3c]
PUSH 0x1
PUSH EBP
CALL 0x00030bc0
MOV EAX,dword ptr [EBP]
ADD ESP,0x10
JMP 0x001d0f25
MOV dword ptr [ESP + 0xd0],0xc
JMP 0x001d1091
FLD dword ptr [ESI + 0xffec671c]
FLD qword ptr [EBP + 0x1f0]
FMUL ST1
FNSTCW word ptr [ESP + 0xb6]
FLD qword ptr [ESI + 0xffeded50]
MOVZX EAX,word ptr [ESP + 0xb6]
FDIV ST1,ST0
FXCH
OR AH,0xc
MOV word ptr [ESP + 0xb4],AX
FLDCW word ptr [ESP + 0xb4]
FISTP qword ptr [ESP + 0xa8]
FLDCW word ptr [ESP + 0xb6]
FXCH
MOV EAX,dword ptr [ESP + 0xa8]
FMUL qword ptr [EBP + 0x1f8]
MOV dword ptr [ESP + 0xe8],EAX
FDIVRP
FLDCW word ptr [ESP + 0xb4]
FISTP qword ptr [ESP + 0xa8]
FLDCW word ptr [ESP + 0xb6]
MOV EAX,dword ptr [ESP + 0xa8]
MOV dword ptr [ESP + 0xec],EAX
JMP 0x001d1177
MOV dword ptr [ESP + 0xd0],0x28
MOV dword ptr [ESP + 0x3c],0x3
JMP 0x001d1091
SUB ESP,0x8
PUSH EAX
PUSH EBP
CALL 0x00030ef0
POP ECX
POP EDI
MOVSX EAX,word ptr [ESP + 0x74]
PUSH EAX
PUSH EBP
CALL 0x00031d00
POP EAX
POP EDX
MOVSX EAX,word ptr [ESP + 0x78]
PUSH EAX
PUSH EBP
CALL 0x00031d00
POP ECX
POP EDI
PUSH 0x1
PUSH EBP
CALL 0x00030890
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x84]
PUSH EBP
CALL 0x00030890
ADD ESP,0x10
CMP dword ptr [EBP],0x2
MOV EAX,dword ptr [EBP + 0x3328]
JNZ 0x001d1b8a
TEST EAX,EAX
JNZ 0x001d3cc7
MOVZX EDI,word ptr [ESP + 0xde]
MOV EAX,0x1
SUB ESP,0x8
MOV EBX,ESI
MOV ECX,EDI
MOV dword ptr [ESP + 0x38],EDI
SHL EAX,CL
MOV dword ptr [ESP + 0x30],EAX
PUSH 0x4
PUSH EAX
CALL 0x000317b0
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d39c9
MOV EDI,dword ptr [ESP + 0xf0]
CMP dword ptr [EBP + 0x24],EDI
MOV EAX,EDI
CMOVLE EAX,dword ptr [EBP + 0x24]
TEST EAX,EAX
MOV EAX,dword ptr [ESP + 0x8]
JLE 0x001d3948
XOR ECX,ECX
XOR EDX,EDX
JMP 0x001d3502
ADD EAX,0x3
ADD EDX,0x1
ADD ECX,0x50
MOV EBX,EDI
CMP dword ptr [EBP + 0x24],EDI
CMOVLE EBX,dword ptr [EBP + 0x24]
CMP EBX,EDX
JLE 0x001d394a
MOV EBX,dword ptr [EBP + 0x28]
FLD qword ptr [EBX + ECX*0x1 + 0x30]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x001d356d
FLDZ
FUCOMIP ST0,ST1
JNC 0x001d3578
FDIV dword ptr [ESI + 0xffeceff0]
MOV EBX,0xffffffff
FLD dword ptr [ESI + 0xffeceff4]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001d357c
FNSTCW word ptr [ESP + 0xb6]
FADD dword ptr [ESI + 0xffec6124]
MOVZX EBX,word ptr [ESP + 0xb6]
OR BH,0xc
MOV word ptr [ESP + 0xb4],BX
FLDCW word ptr [ESP + 0xb4]
FISTP word ptr [ESP + 0xb2]
FLDCW word ptr [ESP + 0xb6]
MOVZX EBX,word ptr [ESP + 0xb2]
JMP 0x001d3580
FSTP ST0
JMP 0x001d3580
FSTP ST0
JMP 0x001d3580
FSTP ST0
NOP
MOV byte ptr [EAX],BL
MOV EBX,dword ptr [EBP + 0x28]
FLD qword ptr [EBX + ECX*0x1 + 0x28]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x001d35ed
FLDZ
FUCOMIP ST0,ST1
JNC 0x001d35f8
FDIV dword ptr [ESI + 0xffeceff0]
MOV EBX,0xffffffff
FLD dword ptr [ESI + 0xffeceff4]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001d35fc
FNSTCW word ptr [ESP + 0xb6]
FADD dword ptr [ESI + 0xffec6124]
MOVZX EBX,word ptr [ESP + 0xb6]
OR BH,0xc
MOV word ptr [ESP + 0xb4],BX
FLDCW word ptr [ESP + 0xb4]
FISTP word ptr [ESP + 0xb2]
FLDCW word ptr [ESP + 0xb6]
MOVZX EBX,word ptr [ESP + 0xb2]
JMP 0x001d3600
FSTP ST0
JMP 0x001d3600
FSTP ST0
JMP 0x001d3600
FSTP ST0
NOP
MOV byte ptr [EAX + 0x1],BL
MOV EBX,dword ptr [EBP + 0x28]
FLD qword ptr [EBX + ECX*0x1 + 0x20]
XOR EBX,EBX
FUCOMI ST0,ST0
JP 0x001d366e
FLDZ
FUCOMIP ST0,ST1
JNC 0x001d3678
FDIV dword ptr [ESI + 0xffeceff0]
MOV EBX,0xffffffff
FLD dword ptr [ESI + 0xffeceff4]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x001d367c
FNSTCW word ptr [ESP + 0xb6]
FADD dword ptr [ESI + 0xffec6124]
MOVZX EBX,word ptr [ESP + 0xb6]
OR BH,0xc
MOV word ptr [ESP + 0xb4],BX
FLDCW word ptr [ESP + 0xb4]
FISTP word ptr [ESP + 0xb2]
FLDCW word ptr [ESP + 0xb6]
MOVZX EBX,word ptr [ESP + 0xb2]
JMP 0x001d3680
FSTP ST0
JMP 0x001d3680
FSTP ST0
JMP 0x001d3680
FSTP ST0
NOP
CMP byte ptr [ESP + 0x40],0x0
MOV byte ptr [EAX + 0x2],BL
JZ 0x001d34e8
MOV byte ptr [EAX + 0x3],0x0
ADD EAX,0x4
JMP 0x001d34eb
MOV EDI,dword ptr [ESP + 0x74]
CMP EAX,0x11
SBB EDX,EDX
AND EDX,0xfffffffc
ADD EDX,0x8
CMP dword ptr [EDI],0x13
MOV word ptr [ESP + 0xde],DX
JNZ 0x001d0f54
MOV EDI,0x8
MOV EDX,0x8
MOV ECX,0x8
MOV dword ptr [ESP + 0x48],0x100
MOV word ptr [ESP + 0xde],DI
MOV word ptr [ESP + 0x10],DX
JMP 0x001d0f6c
LEA EAX,[ESI + 0xffef32b3]
SUB ESP,0x8
MOV EBX,ESI
PUSH EDI
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x999
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001d1b99
XOR EDX,EDX
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x1c],0x0
JMP 0x001d1512
LEA EAX,[ESI + 0xffef32c7]
SUB ESP,0xc
FILD word ptr [ESP + 0x24]
FILD qword ptr [ESP + 0x1c]
FADDP
FSTP qword ptr [ESP]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x99f
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001d1bc2
XOR EDX,EDX
MOV ECX,dword ptr [ESP + 0x28]
CMP ECX,EDX
JLE 0x001d3985
MOVZX EBX,byte ptr [ESP + 0x40]
JMP 0x001d396a
ADD EDX,0x1
ADD EAX,0x3
CMP EDX,ECX
JZ 0x001d3985
XOR EDI,EDI
MOV byte ptr [EAX + 0x2],0x0
MOV word ptr [EAX],DI
TEST BL,BL
JZ 0x001d3960
ADD EDX,0x1
MOV byte ptr [EAX + 0x3],0x0
ADD EAX,0x4
CMP EDX,ECX
JNZ 0x001d396a
CMP dword ptr [ESP + 0x3c],0x2
JNZ 0x001d3b05
SUB ESP,0x4
MOV EAX,0x3
PUSH dword ptr [ESP + 0xc]
MOVZX ECX,byte ptr [ESP + 0x38]
MOV EBX,ESI
SHL EAX,CL
PUSH EAX
PUSH EBP
CALL 0x00030660
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x00033ac8
MOV EAX,dword ptr [EBP + 0x3328]
ADD ESP,0x10
JMP 0x001d1b8a
SUB ESP,0xc
PUSH dword ptr [ESP + 0x74]
CALL 0x00031d50
LEA EAX,[EBP + 0x318]
ADD ESP,0x10
PUSH EAX
LEA EAX,[ESI + 0xffec8a40]
PUSH EAX
LEA EAX,[ESI + 0xffec63d6]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x190
PUSH 0x97d
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
CALL 0x00032e80
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x74]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x001d3a20
JMP 0x001d3a2a
MOV EBP,EAX
MOV EAX,dword ptr [EBP + 0x333c]
TEST EAX,EAX
JNZ 0x001d3a1e
SUB ESP,0xc
MOV EBX,ESI
PUSH EBP
CALL 0x000311d0
ADD ESP,0x10
XOR EAX,EAX
MOV ESI,dword ptr [ESP + 0x16c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x001d4095
ADD ESP,0x17c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[ESI + 0xffef31d2]
SUB ESP,0xc
PUSH EAX
PUSH 0x8ac
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001d26fc
FLD qword ptr [EBP + 0x16c]
XOR EDX,EDX
MOV EDI,0x1
FLDZ
FUCOMIP ST0,ST1
FSTP ST0
SETP DL
CMOVNZ EDX,EDI
MOV dword ptr [ESP + 0x90],EDX
JMP 0x001d103d
MOV byte ptr [ESP + 0x40],AL
JMP 0x001d149a
LEA EAX,[ESI + 0xffef3175]
SUB ESP,0xc
PUSH EAX
PUSH 0x8a1
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001d269c
SUB ESP,0x4
MOV EAX,0x4
PUSH dword ptr [ESP + 0xc]
JMP 0x001d399c
SUB ESP,0x8
PUSH 0x73524742
PUSH EBP
CALL 0x00030ef0
ADD ESP,0x10
JMP 0x001d167c
LEA EAX,[ESI + 0xffef3230]
SUB ESP,0xc
PUSH EAX
PUSH 0x8c0
JMP 0x001d2755
FNSTCW word ptr [ESP + 0xb6]
FMUL dword ptr [ESI + 0xffef3820]
MOVZX EAX,word ptr [ESP + 0xb6]
OR AH,0xc
MOV word ptr [ESP + 0xb4],AX
FLDCW word ptr [ESP + 0xb4]
FISTP qword ptr [ESP + 0xa8]
FLDCW word ptr [ESP + 0xb6]
MOV EAX,dword ptr [ESP + 0xa8]
JMP 0x001d16a8
LEA EAX,[ESI + 0xffef3163]
SUB ESP,0x4
PUSH 0x6
PUSH EAX
PUSH EDI
CALL 0x00031370
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001d3ed9
LEA EAX,[ESI + 0xffec9480]
SUB ESP,0x4
PUSH 0x6
PUSH EAX
PUSH EDI
CALL 0x00031370
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001d3d9d
MOV dword ptr [ESP + 0xf4],0xf800
MOV dword ptr [ESP + 0xf8],0x7e0
MOV dword ptr [ESP + 0xfc],0x1f
MOV dword ptr [ESP + 0x100],0x0
MOV dword ptr [ESP + 0x8],0x2
JMP 0x001d32fc
LEA EAX,[ESI + 0xffec927f]
SUB ESP,0x8
PUSH EAX
PUSH EDI
CALL 0x000326f0
ADD ESP,0x10
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
ADD EAX,0x3
MOV dword ptr [ESP + 0x3c],EAX
JMP 0x001d0d9b
MOV EDX,EAX
JMP 0x001d2534
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x24],ECX
JMP 0x001d2581
MOV EAX,dword ptr [ESP + 0x24]
MOV EDX,0xffffffff
LEA ECX,[EAX + 0xff]
JMP 0x001d2534
LEA EAX,[ESI + 0xffef3285]
SUB ESP,0x8
PUSH dword ptr [ESP + 0x50]
PUSH EAX
PUSH 0x8cf
JMP 0x001d2781
MOV EDI,dword ptr [ESP + 0x28]
LEA ECX,[EDX + 0x1]
MOV byte ptr [EDI],0x1
MOVZX EDX,byte ptr [EDX]
ADD EDI,0x2
MOV dword ptr [ESP + 0x28],EDI
MOV byte ptr [EDI + -0x1],DL
MOV EDI,EAX
JMP 0x001d2555
LEA EAX,[ESI + 0xffef3203]
SUB ESP,0xc
PUSH EAX
PUSH 0x8b4
JMP 0x001d2755
LEA EAX,[ESI + 0xffef3219]
SUB ESP,0xc
PUSH EAX
PUSH 0x8ba
JMP 0x001d2755
SUB ESP,0xc
MOV EBX,ESI
PUSH EBP
CALL 0x000311d0
ADD ESP,0x10
MOV EAX,0x1
JMP 0x001d3a3a
MOV EAX,dword ptr [EBP + 0x24]
SUB ESP,0xc
XOR EDX,EDX
MOV EBX,ESI
MOV dword ptr [ESP + 0x18],EDX
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[ESI + 0xffef3299]
FILD qword ptr [ESP + 0x14]
FSTP qword ptr [ESP]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x976
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH 0x10
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001d348a
LEA EAX,[EBP + 0x318]
SUB ESP,0x8
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffedde4e]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x6a6
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH 0x8000
CALL 0x000323b0
ADD ESP,0x20
JMP 0x001d0d34
CMP dword ptr [ESP + 0x3c],0x4
JNZ 0x001d3da8
MOV EAX,dword ptr [EBP + 0x294]
TEST EAX,EAX
JZ 0x001d3e44
MOV EAX,dword ptr [ESP + 0xc4]
MOV EDI,0x20
MOV EDX,0x20
MOV dword ptr [ESP + 0xe0],0x3
MOV word ptr [ESP + 0xde],DI
MOV dword ptr [ESP + 0x48],0x0
MOV word ptr [ESP + 0x10],DX
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,0x20
MOV dword ptr [ESP + 0x8],0x0
JMP 0x001d0fd8
CMP dword ptr [ESP + 0x3c],0x4
JZ 0x001d3e44
MOV EAX,0x18
CMP dword ptr [ESP + 0x3c],0x3
MOV dword ptr [ESP + 0xe0],0x0
MOV word ptr [ESP + 0xde],AX
MOV EAX,dword ptr [ESP + 0xc4]
MOV dword ptr [ESP + 0x30],EAX
JNZ 0x001d3e67
MOV EDI,dword ptr [EBP + 0x294]
TEST EDI,EDI
JZ 0x001d3e67
LEA EAX,[ESI + 0xffef316a]
SUB ESP,0x8
MOV EBX,ESI
PUSH EAX
PUSH dword ptr [ESP + 0x80]
CALL 0x00032590
MOV dword ptr [ESP],EAX
CALL 0x00033460
ADD ESP,0x10
MOV dword ptr [ESP + 0x48],EAX
TEST EAX,EAX
JZ 0x001d3f7c
MOV ECX,0x20
MOV EBX,0x20
MOV dword ptr [ESP + 0x48],0x0
MOV EAX,0x20
MOV word ptr [ESP + 0xde],CX
MOV word ptr [ESP + 0x10],BX
MOV dword ptr [ESP + 0x8],0x0
JMP 0x001d0fd8
MOV EAX,dword ptr [ESP + 0xc4]
MOV ECX,0x18
MOV dword ptr [ESP + 0xe0],0x0
MOV word ptr [ESP + 0xde],CX
MOV dword ptr [ESP + 0x30],EAX
MOV EDX,0x18
MOV dword ptr [ESP + 0x48],0x0
MOV EAX,0x18
MOV word ptr [ESP + 0x10],DX
MOV dword ptr [ESP + 0x8],0x0
JMP 0x001d0fd8
MOV dword ptr [ESP + 0xd0],0x6c
MOV EAX,0x44
JMP 0x001d107e
MOV dword ptr [ESP + 0xf4],0xf00
MOV dword ptr [ESP + 0xf8],0xf0
MOV dword ptr [ESP + 0xfc],0xf
MOV dword ptr [ESP + 0x100],0xf000
MOV dword ptr [ESP + 0x8],0x3
JMP 0x001d32fc
MOV dword ptr [ESP + 0xf4],0x7c00
MOV dword ptr [ESP + 0xf8],0x3e0
MOV dword ptr [ESP + 0xfc],0x1f
MOV dword ptr [ESP + 0x100],0x0
MOV dword ptr [ESP + 0x8],0x1
JMP 0x001d32fc
LEA EAX,[EBP + 0x318]
PUSH EAX
LEA EAX,[ESI + 0xffec8a40]
PUSH EAX
LEA EAX,[ESI + 0xffec63d6]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x190
PUSH 0x77b
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
CALL 0x00032e80
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x74]
MOV ECX,dword ptr [EAX + 0xc]
TEST ECX,ECX
JNZ 0x001d3f5d
JMP 0x001d3a2a
MOV EBP,EAX
MOV EAX,dword ptr [EBP + 0x333c]
TEST EAX,EAX
JNZ 0x001d3f5b
JMP 0x001d3a2a
CMP dword ptr [ESP + 0x3c],0x4
JZ 0x001d3d56
JMP 0x001d3da8
MOV EDX,0x18
MOV EAX,0x18
MOV dword ptr [ESP + 0x8],0x0
MOV word ptr [ESP + 0x10],DX
JMP 0x001d0fd8
MOV EAX,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x28],EAX
JMP 0x001d25d9
SUB ESP,0xc
PUSH dword ptr [ESP + 0x74]
CALL 0x00031d50
LEA EAX,[EBP + 0x318]
ADD ESP,0x10
PUSH EAX
LEA EAX,[ESI + 0xffec8a40]
PUSH EAX
LEA EAX,[ESI + 0xffec63d6]
PUSH EAX
LEA EAX,[ESI + 0xffef37fc]
PUSH 0x190
PUSH 0x88d
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
CALL 0x00032e80
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x74]
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x001d4002
JMP 0x001d3a2a
MOV EBP,EAX
MOV EAX,dword ptr [EBP + 0x333c]
TEST EAX,EAX
JNZ 0x001d4000
JMP 0x001d3a2a
LEA EAX,[ESI + 0xffef380c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x6a7
PUSH EAX
LEA EAX,[ESI + 0xffec6a3c]
PUSH EAX
CALL 0x000313d0
LEA EAX,[ESI + 0xffef380c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x6a3
PUSH EAX
LEA EAX,[ESI + 0xffede594]
PUSH EAX
CALL 0x000313d0
LEA EAX,[ESI + 0xffef380c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x6a2
PUSH EAX
LEA EAX,[ESI + 0xffec5b28]
PUSH EAX
CALL 0x000313d0
LEA EAX,[ESI + 0xffef380c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x6a1
PUSH EAX
LEA EAX,[ESI + 0xffec5b00]
PUSH EAX
CALL 0x000313d0
CALL 0x0029eab0
LEA EAX,[ESI + 0xffef380c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x6a4
PUSH EAX
LEA EAX,[ESI + 0xffed1338]
PUSH EAX
CALL 0x000313d0
LEA EAX,[ESI + 0xffef380c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x6a8
PUSH EAX
LEA EAX,[ESI + 0xffec776c]
PUSH EAX
CALL 0x000313d0
LEA EAX,[ESI + 0xffef37f0]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x197
PUSH EAX
LEA EAX,[ESI + 0xffef3520]
PUSH EAX
CALL 0x000313d0
LEA EAX,[ESI + 0xffef37f0]
PUSH EAX
LEA EAX,[ESI + 0xffef3112]
PUSH 0x193
PUSH EAX
LEA EAX,[ESI + 0xffed1338]
PUSH EAX
CALL 0x000313d0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nint FUN_001d0cb0(int *param_1,int *param_2,int param_3)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}\n\n" comment comment (function_definition "int FUN_001d0cb0(int *param_1,int *param_2,int param_3)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}" primitive_type (function_declarator "FUN_001d0cb0(int *param_1,int *param_2,int param_3)" identifier (parameter_list "(int *param_1,int *param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "ushort *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined2 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined2 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "char cVar24;" primitive_type identifier ;) (declaration "byte bVar25;" type_identifier identifier ;) (declaration "ushort uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "char *pcVar30;" primitive_type (pointer_declarator "*pcVar30" * identifier) ;) (declaration "undefined1 uVar31;" type_identifier identifier ;) (declaration "ushort *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "ushort *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "undefined4 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "size_t sVar37;" primitive_type identifier ;) (declaration "char *pcVar38;" primitive_type (pointer_declarator "*pcVar38" * identifier) ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar41;" primitive_type identifier ;) (declaration "bool bVar42;" primitive_type identifier ;) (declaration "bool bVar43;" primitive_type identifier ;) (declaration "byte bVar44;" type_identifier identifier ;) (declaration "undefined4 uVar45;" type_identifier identifier ;) (declaration "char *pcVar46;" primitive_type (pointer_declarator "*pcVar46" * identifier) ;) (declaration "double dVar47;" primitive_type identifier ;) (declaration "undefined8 local_184;" type_identifier identifier ;) (declaration "byte local_17c;" type_identifier identifier ;) (declaration "undefined1 uStack_17b;" type_identifier identifier ;) (declaration "undefined2 uStack_17a;" type_identifier identifier ;) (declaration "int iStack_178;" primitive_type identifier ;) (declaration "int local_174;" primitive_type identifier ;) (declaration "int local_170;" primitive_type identifier ;) (declaration "char *local_168;" primitive_type (pointer_declarator "*local_168" * identifier) ;) (declaration "char *local_164;" primitive_type (pointer_declarator "*local_164" * identifier) ;) (declaration "int local_160;" primitive_type identifier ;) (declaration "uint local_14c;" type_identifier identifier ;) (declaration "int iStack_148;" primitive_type identifier ;) (declaration "uint local_144;" type_identifier identifier ;) (declaration "uint local_134;" type_identifier identifier ;) (declaration "int iStack_130;" primitive_type identifier ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int local_124;" primitive_type identifier ;) (declaration "short local_120;" (sized_type_specifier "short" short) identifier ;) (declaration "short local_11c;" (sized_type_specifier "short" short) identifier ;) (declaration "uint local_10c;" type_identifier identifier ;) (declaration "int local_108;" primitive_type identifier ;) (declaration "uint local_104;" type_identifier identifier ;) (declaration "int iStack_100;" primitive_type identifier ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "undefined4 local_c4;" type_identifier identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "undefined2 local_b0;" type_identifier identifier ;) (declaration "short local_ae;" (sized_type_specifier "short" short) identifier ;) (declaration "uint local_ac;" type_identifier identifier ;) (declaration "size_t local_a8;" primitive_type identifier ;) (declaration "undefined4 local_a4;" type_identifier identifier ;) (declaration "undefined4 local_a0;" type_identifier identifier ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined4 local_8c;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "double local_38;" primitive_type identifier ;) (declaration "double local_30;" primitive_type identifier ;) (declaration "double local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar44 = 0;" (assignment_expression "bVar44 = 0" 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) ))))) ;) (if_statement "if (param_1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" identifier (argument_list "("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" ( (string_literal ""image_info != (const ImageInfo *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_1[0xc7d] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" if (parenthesized_expression "(param_1[0xc7d] != -0x54535255)" ( (binary_expression "param_1[0xc7d] != -0x54535255" (subscript_expression "param_1[0xc7d]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" identifier (argument_list "("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" ( (string_literal ""image_info->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_2 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" identifier (argument_list "("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_2[0xcd1] != -0x54535255)" ( (binary_expression "param_2[0xcd1] != -0x54535255" (subscript_expression "param_2[0xcd1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }" if (parenthesized_expression "(param_2[0xcca] != 0)" ( (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }" { (expression_statement "LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);" (call_expression "LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6)" identifier (argument_list "(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) })) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x1c) != -0x54535255)" ( (binary_expression "*(int *)(param_3 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" identifier (argument_list "("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (expression_statement "iVar13 = OpenBlob(param_1,param_2,4,param_3);" (assignment_expression "iVar13 = OpenBlob(param_1,param_2,4,param_3)" identifier = (call_expression "OpenBlob(param_1,param_2,4,param_3)" identifier (argument_list "(param_1,param_2,4,param_3)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }\n    return iVar13;\n  }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }\n    return iVar13;\n  }" { (labeled_statement "LAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\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                    /* WARNING: Subroutine does not return */\n      FUN_0029eab0();\n    }" { comment (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar13;" return identifier ;) })) (expression_statement "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);" (assignment_expression "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a)" identifier = (call_expression "LocaleCompare(param_1 + 0x7c,&DAT_002a227a)" identifier (argument_list "(param_1 + 0x7c,&DAT_002a227a)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) , (pointer_expression "&DAT_002a227a" & identifier) )))) ;) (expression_statement "bVar11 = 2;" (assignment_expression "bVar11 = 2" identifier = number_literal) ;) (if_statement "if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }" { (expression_statement "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);" (assignment_expression "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f)" identifier = (call_expression "LocaleCompare(param_1 + 0x7c,&DAT_002a227f)" identifier (argument_list "(param_1 + 0x7c,&DAT_002a227f)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) , (pointer_expression "&DAT_002a227f" & identifier) )))) ;) (expression_statement "bVar11 = (iVar13 != 0) + 3;" (assignment_expression "bVar11 = (iVar13 != 0) + 3" identifier = (binary_expression "(iVar13 != 0) + 3" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) + number_literal)) ;) })) (expression_statement "iVar13 = GetImageOption(param_1,"bmp:format");" (assignment_expression "iVar13 = GetImageOption(param_1,"bmp:format")" identifier = (call_expression "GetImageOption(param_1,"bmp:format")" identifier (argument_list "(param_1,"bmp:format")" ( identifier , (string_literal ""bmp:format"" " string_content ") )))) ;) (if_statement "if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Format=%s"" " string_content ") , identifier ))) ;) (expression_statement "iVar14 = LocaleCompare(iVar13,&DAT_002cc136);" (assignment_expression "iVar14 = LocaleCompare(iVar13,&DAT_002cc136)" identifier = (call_expression "LocaleCompare(iVar13,&DAT_002cc136)" identifier (argument_list "(iVar13,&DAT_002cc136)" ( identifier , (pointer_expression "&DAT_002cc136" & identifier) )))) ;) (expression_statement "bVar25 = 2;" (assignment_expression "bVar25 = 2" identifier = number_literal) ;) (if_statement "if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar25 = bVar11;\n    }" { (expression_statement "bVar25 = bVar11;" (assignment_expression "bVar25 = bVar11" identifier = identifier) ;) })) (expression_statement "iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);" (assignment_expression "iVar14 = LocaleCompare(iVar13,&DAT_002cc13b)" identifier = (call_expression "LocaleCompare(iVar13,&DAT_002cc13b)" identifier (argument_list "(iVar13,&DAT_002cc13b)" ( identifier , (pointer_expression "&DAT_002cc13b" & identifier) )))) ;) (expression_statement "bVar10 = 3;" (assignment_expression "bVar10 = 3" identifier = number_literal) ;) (if_statement "if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar10 = bVar25;\n    }" { (expression_statement "bVar10 = bVar25;" (assignment_expression "bVar10 = bVar25" identifier = identifier) ;) })) (expression_statement "iVar13 = LocaleCompare(iVar13,&DAT_002cc140);" (assignment_expression "iVar13 = LocaleCompare(iVar13,&DAT_002cc140)" identifier = (call_expression "LocaleCompare(iVar13,&DAT_002cc140)" identifier (argument_list "(iVar13,&DAT_002cc140)" ( identifier , (pointer_expression "&DAT_002cc140" & identifier) )))) ;) (expression_statement "bVar11 = 4;" (assignment_expression "bVar11 = 4" identifier = number_literal) ;) (if_statement "if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar11 = bVar10;\n    }" { (expression_statement "bVar11 = bVar10;" (assignment_expression "bVar11 = bVar10" identifier = identifier) ;) })) })) (expression_statement "uVar15 = GetImageListLength(param_2);" (assignment_expression "uVar15 = GetImageListLength(param_2)" identifier = (call_expression "GetImageListLength(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" identifier = number_literal) ;) (expression_statement "local_108 = 0;" (assignment_expression "local_108 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = param_2[1] - 3;" (assignment_expression "uVar16 = param_2[1] - 3" identifier = (binary_expression "param_2[1] - 3" (subscript_expression "param_2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (uVar16 < 0x1f) goto LAB_001d1cae;" if (parenthesized_expression "(uVar16 < 0x1f)" ( (binary_expression "uVar16 < 0x1f" identifier < number_literal) )) (goto_statement "goto LAB_001d1cae;" goto statement_identifier ;)) (do_statement "do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );" do (compound_statement "{\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  }" { (expression_statement "TransformImageColorspace(param_2,0x17);" (call_expression "TransformImageColorspace(param_2,0x17)" identifier (argument_list "(param_2,0x17)" ( identifier , number_literal ))) ;) (do_statement "do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);" do (compound_statement "{\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    }" { (expression_statement "puVar36 = &local_c4;" (assignment_expression "puVar36 = &local_c4" identifier = (pointer_expression "&local_c4" & identifier)) ;) (for_statement "for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }" for ( (assignment_expression "iVar13 = 0x29" identifier = number_literal) ; (binary_expression "iVar13 != 0" identifier != number_literal) ; (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ) (compound_statement "{\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }" { (expression_statement "*puVar36 = 0;" (assignment_expression "*puVar36 = 0" (pointer_expression "*puVar36" * identifier) = number_literal) ;) (expression_statement "puVar36 = puVar36 + (uint)bVar44 * -2 + 1;" (assignment_expression "puVar36 = puVar36 + (uint)bVar44 * -2 + 1" identifier = (binary_expression "puVar36 + (uint)bVar44 * -2 + 1" (binary_expression "puVar36 + (uint)bVar44 * -2" identifier + (binary_expression "(uint)bVar44 * -2" (cast_expression "(uint)bVar44" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (if_statement "if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }" { (expression_statement "local_c8 = 0x1a;" (assignment_expression "local_c8 = 0x1a" identifier = number_literal) ;) (expression_statement "iVar13 = 0x1a;" (assignment_expression "iVar13 = 0x1a" identifier = number_literal) ;) }) (else_clause "else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" else (compound_statement "{\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" { (expression_statement "local_c8 = 0x36;" (assignment_expression "local_c8 = 0x36" identifier = number_literal) ;) (expression_statement "iVar13 = 0x36;" (assignment_expression "iVar13 = 0x36" identifier = number_literal) ;) }))) (expression_statement "local_98 = 0xff0000;" (assignment_expression "local_98 = 0xff0000" identifier = number_literal) ;) (expression_statement "local_94 = 0xff00;" (assignment_expression "local_94 = 0xff00" identifier = number_literal) ;) (expression_statement "local_90 = 0xff;" (assignment_expression "local_90 = 0xff" identifier = number_literal) ;) (expression_statement "local_8c = 0xff000000;" (assignment_expression "local_8c = 0xff000000" identifier = number_literal) ;) (expression_statement "iVar14 = *param_2;" (assignment_expression "iVar14 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_c0 = iVar13;" (assignment_expression "local_c0 = iVar13" identifier = identifier) ;) (if_statement "if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (if_statement "if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }" if (parenthesized_expression "(0x100 < uVar16)" ( (binary_expression "0x100 < uVar16" number_literal < identifier) )) (compound_statement "{\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }" { (expression_statement "SetImageStorageClass(param_2,1);" (call_expression "SetImageStorageClass(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (expression_statement "iVar14 = *param_2;" (assignment_expression "iVar14 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto LAB_001d0f25;" goto statement_identifier ;) })) (labeled_statement "LAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" statement_identifier : (if_statement "if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" if (parenthesized_expression "(uVar16 < 3)" ( (binary_expression "uVar16 < 3" identifier < number_literal) )) (compound_statement "{\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }" { (expression_statement "local_ae = 1;" (assignment_expression "local_ae = 1" identifier = number_literal) ;) (if_statement "if (*param_1 == 0x13) goto LAB_001d36c0;" if (parenthesized_expression "(*param_1 == 0x13)" ( (binary_expression "*param_1 == 0x13" (pointer_expression "*param_1" * identifier) == number_literal) )) (goto_statement "goto LAB_001d36c0;" goto statement_identifier ;)) (labeled_statement "LAB_001d0f54:\n          local_17c = (byte)local_ae;" statement_identifier : (expression_statement "local_17c = (byte)local_ae;" (assignment_expression "local_17c = (byte)local_ae" identifier = (cast_expression "(byte)local_ae" ( (type_descriptor "byte" type_identifier) ) identifier)) ;)) (expression_statement "local_144 = 1 << (local_17c & 0x1f);" (assignment_expression "local_144 = 1 << (local_17c & 0x1f)" identifier = (binary_expression "1 << (local_17c & 0x1f)" number_literal << (parenthesized_expression "(local_17c & 0x1f)" ( (binary_expression "local_17c & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uStack_17b = (undefined1)((ushort)local_ae >> 8);" (assignment_expression "uStack_17b = (undefined1)((ushort)local_ae >> 8)" identifier = (call_expression "(undefined1)((ushort)local_ae >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ushort)local_ae >> 8)" ( (binary_expression "(ushort)local_ae >> 8" (cast_expression "(ushort)local_ae" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) }) (else_clause "else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" else (compound_statement "{\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" { (expression_statement "local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;" (assignment_expression "local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8" identifier = (binary_expression "(-(ushort)(uVar16 < 0x11) & 0xfffc) + 8" (parenthesized_expression "(-(ushort)(uVar16 < 0x11) & 0xfffc)" ( (binary_expression "-(ushort)(uVar16 < 0x11) & 0xfffc" (unary_expression "-(ushort)(uVar16 < 0x11)" - (call_expression "(ushort)(uVar16 < 0x11)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar16 < 0x11)" ( (binary_expression "uVar16 < 0x11" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (if_statement "if (*param_1 != 0x13) goto LAB_001d0f54;" if (parenthesized_expression "(*param_1 != 0x13)" ( (binary_expression "*param_1 != 0x13" (pointer_expression "*param_1" * identifier) != number_literal) )) (goto_statement "goto LAB_001d0f54;" goto statement_identifier ;)) (labeled_statement "LAB_001d36c0:\n          local_144 = 0x100;" statement_identifier : (expression_statement "local_144 = 0x100;" (assignment_expression "local_144 = 0x100" identifier = number_literal) ;)) (expression_statement "local_ae = 8;" (assignment_expression "local_ae = 8" identifier = number_literal) ;) (expression_statement "local_17c = 8;" (assignment_expression "local_17c = 8" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) })))) (expression_statement "local_9c = local_144;" (assignment_expression "local_9c = local_144" identifier = identifier) ;) (if_statement "if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" if (parenthesized_expression "((param_2[0xa5] == 0) && (uVar16 <= local_144))" ( (binary_expression "(param_2[0xa5] == 0) && (uVar16 <= local_144)" (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(uVar16 <= local_144)" ( (binary_expression "uVar16 <= local_144" identifier <= identifier) ))) )) (compound_statement "{\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }" { (expression_statement "local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));" (assignment_expression "local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f))" identifier = (binary_expression "iVar13 + (3 << ((byte)local_ae & 0x1f))" identifier + (parenthesized_expression "(3 << ((byte)local_ae & 0x1f))" ( (binary_expression "3 << ((byte)local_ae & 0x1f)" number_literal << (parenthesized_expression "((byte)local_ae & 0x1f)" ( (binary_expression "(byte)local_ae & 0x1f" (cast_expression "(byte)local_ae" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "iVar13 = local_c0;" (assignment_expression "iVar13 = local_c0" identifier = identifier) ;) (if_statement "if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }" if (parenthesized_expression "(bVar11 != 2)" ( (binary_expression "bVar11 != 2" identifier != number_literal) )) (compound_statement "{\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }" { (expression_statement "local_c0 = local_c0 + local_144;" (assignment_expression "local_c0 = local_c0 + local_144" identifier = (binary_expression "local_c0 + local_144" identifier + identifier)) ;) (expression_statement "iVar13 = local_c0;" (assignment_expression "iVar13 = local_c0" identifier = identifier) ;) })) }) (else_clause "else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" else (compound_statement "{\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" { (expression_statement "SetImageStorageClass(param_2,1);" (call_expression "SetImageStorageClass(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (if_statement "if (*param_2 == 1) goto LAB_001d3250;" if (parenthesized_expression "(*param_2 == 1)" ( (binary_expression "*param_2 == 1" (pointer_expression "*param_2" * identifier) == number_literal) )) (goto_statement "goto LAB_001d3250;" goto statement_identifier ;)) }))) (expression_statement "uVar16 = (uint)CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar16 = (uint)CONCAT11(uStack_17b,local_17c)" identifier = (cast_expression "(uint)CONCAT11(uStack_17b,local_17c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))))) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_c8 = iVar13;" (assignment_expression "local_c8 = iVar13" identifier = identifier) ;) }) (else_clause "else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" else (compound_statement "{\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" { (labeled_statement "LAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" statement_identifier : (if_statement "if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" if (parenthesized_expression "(iVar14 != 1)" ( (binary_expression "iVar14 != 1" identifier != number_literal) )) (compound_statement "{\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001d0f31;" goto statement_identifier ;) }))) (labeled_statement "LAB_001d3250:\n        local_9c = 0;" statement_identifier : (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;)) (expression_statement "iVar13 = GetImageOption(param_1,"bmp:subtype");" (assignment_expression "iVar13 = GetImageOption(param_1,"bmp:subtype")" identifier = (call_expression "GetImageOption(param_1,"bmp:subtype")" identifier (argument_list "(param_1,"bmp:subtype")" ( identifier , (string_literal ""bmp:subtype"" " string_content ") )))) ;) (if_statement "if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }" { (if_statement "if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" if (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) (compound_statement "{\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }" { (if_statement "if (param_2[0xa5] == 0) goto LAB_001d3e67;" if (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001d3e67;" goto statement_identifier ;)) (labeled_statement "LAB_001d3d56:\n            local_ac = 3;" statement_identifier : (expression_statement "local_ac = 3;" (assignment_expression "local_ac = 3" identifier = number_literal) ;)) (expression_statement "local_ae = 0x20;" (assignment_expression "local_ae = 0x20" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x20;" (assignment_expression "uVar16 = 0x20" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" else (compound_statement "{\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" { (labeled_statement "LAB_001d3da8:\n            local_ac = 0;" statement_identifier : (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;)) (expression_statement "local_ae = 0x18;" (assignment_expression "local_ae = 0x18" identifier = number_literal) ;) (if_statement "if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" if (parenthesized_expression "((bVar11 == 3) && (param_2[0xa5] != 0))" ( (binary_expression "(bVar11 == 3) && (param_2[0xa5] != 0)" (parenthesized_expression "(bVar11 == 3)" ( (binary_expression "bVar11 == 3" identifier == number_literal) )) && (parenthesized_expression "(param_2[0xa5] != 0)" ( (binary_expression "param_2[0xa5] != 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }" { (expression_statement "uVar45 = GetImageOption(param_1,"bmp3:alpha");" (assignment_expression "uVar45 = GetImageOption(param_1,"bmp3:alpha")" identifier = (call_expression "GetImageOption(param_1,"bmp3:alpha")" identifier (argument_list "(param_1,"bmp3:alpha")" ( identifier , (string_literal ""bmp3:alpha"" " string_content ") )))) ;) (expression_statement "iVar13 = IsStringTrue(uVar45);" (assignment_expression "iVar13 = IsStringTrue(uVar45)" identifier = (call_expression "IsStringTrue(uVar45)" identifier (argument_list "(uVar45)" ( identifier )))) ;) (if_statement "if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }" { (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" else (compound_statement "{\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" { (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x20;" (assignment_expression "uVar16 = 0x20" identifier = number_literal) ;) (expression_statement "local_ae = 0x20;" (assignment_expression "local_ae = 0x20" identifier = number_literal) ;) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" else (compound_statement "{\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" { (labeled_statement "LAB_001d3e67:\n              local_ac = 0;" statement_identifier : (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;)) (expression_statement "local_ae = 0x18;" (assignment_expression "local_ae = 0x18" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" identifier = number_literal) ;) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }))) }))) }) (else_clause "else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" else (compound_statement "{\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" { (if_statement "if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" if (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }" { (expression_statement "iVar14 = LocaleNCompare(iVar13,"RGB555");" (assignment_expression "iVar14 = LocaleNCompare(iVar13,"RGB555")" identifier = (call_expression "LocaleNCompare(iVar13,"RGB555")" identifier (argument_list "(iVar13,"RGB555")" ( identifier , (string_literal ""RGB555"" " string_content ") )))) ;) (if_statement "if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }" { (expression_statement "local_98 = 0x7c00;" (assignment_expression "local_98 = 0x7c00" identifier = number_literal) ;) (expression_statement "local_94 = 0x3e0;" (assignment_expression "local_94 = 0x3e0" identifier = number_literal) ;) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" identifier = number_literal) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" else (compound_statement "{\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" { (expression_statement "iVar13 = LocaleNCompare(iVar13,"RGB565");" (assignment_expression "iVar13 = LocaleNCompare(iVar13,"RGB565")" identifier = (call_expression "LocaleNCompare(iVar13,"RGB565")" identifier (argument_list "(iVar13,"RGB565")" ( identifier , (string_literal ""RGB565"" " string_content ") )))) ;) (if_statement "if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" { (if_statement "if (bVar11 == 4) goto LAB_001d3e67;" if (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) (goto_statement "goto LAB_001d3e67;" goto statement_identifier ;)) (goto_statement "goto LAB_001d3da8;" goto statement_identifier ;) })) (expression_statement "local_98 = 0xf800;" (assignment_expression "local_98 = 0xf800" identifier = number_literal) ;) (expression_statement "local_94 = 0x7e0;" (assignment_expression "local_94 = 0x7e0" identifier = number_literal) ;) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" identifier = number_literal) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 2;" (assignment_expression "iVar14 = 2" identifier = number_literal) ;) }))) }) (else_clause "else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" else (compound_statement "{\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" { (expression_statement "iVar14 = LocaleNCompare(iVar13,"ARGB4444");" (assignment_expression "iVar14 = LocaleNCompare(iVar13,"ARGB4444")" identifier = (call_expression "LocaleNCompare(iVar13,"ARGB4444")" identifier (argument_list "(iVar13,"ARGB4444")" ( identifier , (string_literal ""ARGB4444"" " string_content ") )))) ;) (if_statement "if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }" { (expression_statement "local_98 = 0xf00;" (assignment_expression "local_98 = 0xf00" identifier = number_literal) ;) (expression_statement "local_94 = 0xf0;" (assignment_expression "local_94 = 0xf0" identifier = number_literal) ;) (expression_statement "local_90 = 0xf;" (assignment_expression "local_90 = 0xf" identifier = number_literal) ;) (expression_statement "local_8c = 0xf000;" (assignment_expression "local_8c = 0xf000" identifier = number_literal) ;) (expression_statement "iVar14 = 3;" (assignment_expression "iVar14 = 3" identifier = number_literal) ;) }) (else_clause "else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" else (compound_statement "{\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" { (expression_statement "iVar13 = LocaleNCompare(iVar13,"ARGB1555");" (assignment_expression "iVar13 = LocaleNCompare(iVar13,"ARGB1555")" identifier = (call_expression "LocaleNCompare(iVar13,"ARGB1555")" identifier (argument_list "(iVar13,"ARGB1555")" ( identifier , (string_literal ""ARGB1555"" " string_content ") )))) ;) (if_statement "if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" { (if_statement "if (bVar11 == 4) goto LAB_001d3d56;" if (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) (goto_statement "goto LAB_001d3d56;" goto statement_identifier ;)) (goto_statement "goto LAB_001d3da8;" goto statement_identifier ;) })) (expression_statement "local_98 = 0x7c00;" (assignment_expression "local_98 = 0x7c00" identifier = number_literal) ;) (expression_statement "local_94 = 0x3e0;" (assignment_expression "local_94 = 0x3e0" identifier = number_literal) ;) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" identifier = number_literal) ;) (expression_statement "local_8c = 0x8000;" (assignment_expression "local_8c = 0x8000" identifier = number_literal) ;) (expression_statement "iVar14 = 4;" (assignment_expression "iVar14 = 4" identifier = number_literal) ;) }))) }))) (expression_statement "local_ac = 3;" (assignment_expression "local_ac = 3" identifier = number_literal) ;) (expression_statement "local_ae = 0x10;" (assignment_expression "local_ae = 0x10" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x10;" (assignment_expression "local_17c = 0x10" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x10;" (assignment_expression "uVar16 = 0x10" identifier = number_literal) ;) }))) }))) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = uVar16 * param_2[6] + 0x1f >> 5;" (assignment_expression "uVar16 = uVar16 * param_2[6] + 0x1f >> 5" identifier = (binary_expression "uVar16 * param_2[6] + 0x1f >> 5" (binary_expression "uVar16 * param_2[6] + 0x1f" (binary_expression "uVar16 * param_2[6]" identifier * (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) >> number_literal)) ;) (expression_statement "uVar17 = uVar16 * 4;" (assignment_expression "uVar17 = uVar16 * 4" identifier = (binary_expression "uVar16 * 4" identifier * number_literal)) ;) (expression_statement "iVar13 = GetImageProfile(param_2,&DAT_002a81ca);" (assignment_expression "iVar13 = GetImageProfile(param_2,&DAT_002a81ca)" identifier = (call_expression "GetImageProfile(param_2,&DAT_002a81ca)" identifier (argument_list "(param_2,&DAT_002a81ca)" ( identifier , (pointer_expression "&DAT_002a81ca" & identifier) )))) ;) (expression_statement "bVar41 = iVar13 != 0;" (assignment_expression "bVar41 = iVar13 != 0" identifier = (binary_expression "iVar13 != 0" identifier != number_literal)) ;) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (if_statement "if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }" if (parenthesized_expression "(param_2[0x75] == 0 && !bVar41)" ( (binary_expression "param_2[0x75] == 0 && !bVar41" (binary_expression "param_2[0x75] == 0" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) == number_literal) && (unary_expression "!bVar41" ! identifier)) )) (compound_statement "{\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }" { (expression_statement "bVar6 = *(double *)(param_2 + 0x5b) != 0.0;" (assignment_expression "bVar6 = *(double *)(param_2 + 0x5b) != 0.0" identifier = (binary_expression "*(double *)(param_2 + 0x5b) != 0.0" (pointer_expression "*(double *)(param_2 + 0x5b)" * (cast_expression "(double *)(param_2 + 0x5b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5b)" ( (binary_expression "param_2 + 0x5b" identifier + number_literal) )))) != number_literal)) ;) })) (if_statement "if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n        local_bc = 0xc;\n      }" { (expression_statement "local_bc = 0xc;" (assignment_expression "local_bc = 0xc" identifier = number_literal) ;) }) (else_clause "else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" else (if_statement "if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" if (parenthesized_expression "((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0))" ( (binary_expression "(bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)" (parenthesized_expression "(bVar11 == 3)" ( (binary_expression "bVar11 == 3" identifier == number_literal) )) || (parenthesized_expression "(!bVar6 && param_2[0xa5] == 0)" ( (binary_expression "!bVar6 && param_2[0xa5] == 0" (unary_expression "!bVar6" ! identifier) && (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\n        local_bc = 0x28;\n        bVar11 = 3;\n      }" { (expression_statement "local_bc = 0x28;" (assignment_expression "local_bc = 0x28" identifier = number_literal) ;) (expression_statement "bVar11 = 3;" (assignment_expression "bVar11 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" else (compound_statement "{\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" { (if_statement "if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" if (parenthesized_expression "(param_2[0x75] == 0 && !bVar41)" ( (binary_expression "param_2[0x75] == 0 && !bVar41" (binary_expression "param_2[0x75] == 0" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) == number_literal) && (unary_expression "!bVar41" ! identifier)) )) (compound_statement "{\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }" { (expression_statement "local_bc = 0x6c;" (assignment_expression "local_bc = 0x6c" identifier = number_literal) ;) (expression_statement "iVar18 = 0x44;" (assignment_expression "iVar18 = 0x44" identifier = number_literal) ;) }) (else_clause "else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" else (compound_statement "{\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" { (expression_statement "local_bc = 0x7c;" (assignment_expression "local_bc = 0x7c" identifier = number_literal) ;) (expression_statement "iVar18 = 0x54;" (assignment_expression "iVar18 = 0x54" identifier = number_literal) ;) }))) (expression_statement "local_c8 = local_c8 + iVar18;" (assignment_expression "local_c8 = local_c8 + iVar18" identifier = (binary_expression "local_c8 + iVar18" identifier + identifier)) ;) (expression_statement "bVar11 = 4;" (assignment_expression "bVar11 = 4" identifier = number_literal) ;) (expression_statement "local_c0 = local_c0 + iVar18;" (assignment_expression "local_c0 = local_c0 + iVar18" identifier = (binary_expression "local_c0 + iVar18" identifier + identifier)) ;) }))))) (expression_statement "iVar18 = param_2[6];" (assignment_expression "iVar18 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4 = 0xb6d;" (assignment_expression "local_a4 = 0xb6d" identifier = number_literal) ;) (expression_statement "iVar28 = param_2[7];" (assignment_expression "iVar28 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (expression_statement "local_a0 = 0xb6d;" (assignment_expression "local_a0 = 0xb6d" identifier = number_literal) ;) (expression_statement "sVar37 = uVar17 * iVar28;" (assignment_expression "sVar37 = uVar17 * iVar28" identifier = (binary_expression "uVar17 * iVar28" identifier * identifier)) ;) (expression_statement "local_128 = local_c8 + sVar37;" (assignment_expression "local_128 = local_c8 + sVar37" identifier = (binary_expression "local_c8 + sVar37" identifier + identifier)) ;) (if_statement "if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" if (parenthesized_expression "((uint)param_2[0x77] < 2)" ( (binary_expression "(uint)param_2[0x77] < 2" (cast_expression "(uint)param_2[0x77]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0x77]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }" { (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" identifier = (cast_expression "(uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" identifier (argument_list "(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" ( (binary_expression "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50" (parenthesized_expression "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (binary_expression "(float)*(double *)(param_2 + 0x7c) * DAT_0029f71c" (cast_expression "(float)*(double *)(param_2 + 0x7c)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7c)" * (cast_expression "(double *)(param_2 + 0x7c)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))) * identifier) )) / (cast_expression "(float)_DAT_002b7d50" ( (type_descriptor "float" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_a4 = local_e4;" (assignment_expression "local_a4 = local_e4" identifier = identifier) ;) (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" identifier = (cast_expression "(uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" identifier (argument_list "((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" ( (binary_expression "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50" (parenthesized_expression "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (binary_expression "DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)" identifier * (cast_expression "(float)*(double *)(param_2 + 0x7e)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7e)" * (cast_expression "(double *)(param_2 + 0x7e)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7e)" ( (binary_expression "param_2 + 0x7e" identifier + number_literal) )))))) )) / (cast_expression "(float)_DAT_002b7d50" ( (type_descriptor "float" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_a0 = local_e4;" (assignment_expression "local_a0 = local_e4" identifier = identifier) ;) }) (else_clause "else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" else (if_statement "if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" if (parenthesized_expression "(param_2[0x77] == 2)" ( (binary_expression "param_2[0x77] == 2" (subscript_expression "param_2[0x77]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" identifier = (cast_expression "(uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" identifier (argument_list "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (binary_expression "(float)*(double *)(param_2 + 0x7c) * DAT_0029f71c" (cast_expression "(float)*(double *)(param_2 + 0x7c)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7c)" * (cast_expression "(double *)(param_2 + 0x7c)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))) * identifier) )))))) ;) (expression_statement "local_a4 = local_e4;" (assignment_expression "local_a4 = local_e4" identifier = identifier) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" identifier = (cast_expression "(uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" identifier (argument_list "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (binary_expression "DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)" identifier * (cast_expression "(float)*(double *)(param_2 + 0x7e)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7e)" * (cast_expression "(double *)(param_2 + 0x7e)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7e)" ( (binary_expression "param_2 + 0x7e" identifier + number_literal) )))))) )))))) ;) (expression_statement "local_a0 = local_e4;" (assignment_expression "local_a0 = local_e4" identifier = identifier) ;) })))) (expression_statement "uVar27 = iVar18 + 0x100U;" (assignment_expression "uVar27 = iVar18 + 0x100U" identifier = (binary_expression "iVar18 + 0x100U" identifier + number_literal)) ;) (if_statement "if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }" if (parenthesized_expression "(iVar18 + 0x100U < uVar17)" ( (binary_expression "iVar18 + 0x100U < uVar17" (binary_expression "iVar18 + 0x100U" identifier + number_literal) < identifier) )) (compound_statement "{\n        uVar27 = uVar17;\n      }" { (expression_statement "uVar27 = uVar17;" (assignment_expression "uVar27 = uVar17" identifier = identifier) ;) })) (expression_statement "local_b8 = iVar18;" (assignment_expression "local_b8 = iVar18" identifier = identifier) ;) (expression_statement "local_b4 = iVar28;" (assignment_expression "local_b4 = iVar28" identifier = identifier) ;) (expression_statement "local_a8 = sVar37;" (assignment_expression "local_a8 = sVar37" identifier = identifier) ;) (expression_statement "local_88 = local_144;" (assignment_expression "local_88 = local_144" identifier = identifier) ;) (expression_statement "local_124 = AcquireVirtualMemory(iVar28,uVar27);" (assignment_expression "local_124 = AcquireVirtualMemory(iVar28,uVar27)" identifier = (call_expression "AcquireVirtualMemory(iVar28,uVar27)" identifier (argument_list "(iVar28,uVar27)" ( identifier , identifier )))) ;) (expression_statement "piVar35 = param_2;" (assignment_expression "piVar35 = param_2" identifier = identifier) ;) (if_statement "if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }" if (parenthesized_expression "(local_124 == 0)" ( (binary_expression "local_124 == 0" identifier == number_literal) )) (compound_statement "{\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }" { (expression_statement "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);" (call_expression "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" identifier (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , number_literal , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" while (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" ( (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" identifier = identifier) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" { (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" identifier = (cast_expression "(int *)piVar8[0xccf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0xccf]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_001d3a2a;" goto statement_identifier ;) })) (expression_statement "local_168 = (char *)GetVirtualMemoryBlob(local_124);" (assignment_expression "local_168 = (char *)GetVirtualMemoryBlob(local_124)" identifier = (cast_expression "(char *)GetVirtualMemoryBlob(local_124)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetVirtualMemoryBlob(local_124)" identifier (argument_list "(local_124)" ( identifier ))))) ;) (expression_statement "memset(local_168,0,sVar37);" (call_expression "memset(local_168,0,sVar37)" identifier (argument_list "(local_168,0,sVar37)" ( identifier , number_literal , identifier ))) ;) (expression_statement "uVar7 = CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar7 = CONCAT11(uStack_17b,local_17c)" identifier = (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier )))) ;) (switch_statement "switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }" switch (parenthesized_expression "(uVar7)" ( identifier )) (compound_statement "{\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }" { (case_statement "default:\n        goto LAB_001d23a7;" default : (goto_statement "goto LAB_001d23a7;" goto statement_identifier ;)) (case_statement "case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;" case number_literal : (if_statement "if (param_2[7] < 1) break;" if (parenthesized_expression "(param_2[7] < 1)" ( (binary_expression "param_2[7] < 1" (subscript_expression "param_2[7]" identifier [ number_literal ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "iStack_148 = 0;" (assignment_expression "iStack_148 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);" do (compound_statement "{\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" ( (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);" do (compound_statement "{\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            }" { (expression_statement "uVar27 = uVar27 * 2;" (assignment_expression "uVar27 = uVar27 * 2" identifier = (binary_expression "uVar27 * 2" identifier * number_literal)) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" * (cast_expression "(int *)(param_2[0xaa] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x40)" ( (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" * (cast_expression "(int *)(param_2[0xaa] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x44)" ( (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar34 = (uint)NAN(dVar47);" (assignment_expression "uVar34 = (uint)NAN(dVar47)" identifier = (cast_expression "(uint)NAN(dVar47)" ( (type_descriptor "uint" type_identifier) ) (call_expression "NAN(dVar47)" identifier (argument_list "(dVar47)" ( identifier ))))) ;) (if_statement "if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }" if (parenthesized_expression "(dVar47 != 0.0)" ( (binary_expression "dVar47 != 0.0" identifier != number_literal) )) (compound_statement "{\n                  uVar34 = 1;\n                }" { (expression_statement "uVar34 = 1;" (assignment_expression "uVar34 = 1" identifier = number_literal) ;) })) (expression_statement "uVar27 = uVar27 | uVar34;" (assignment_expression "uVar27 = uVar27 | uVar34" identifier = (binary_expression "uVar27 | uVar34" identifier | identifier)) ;) })) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (if_statement "if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }" if (parenthesized_expression "(iVar39 == 8)" ( (binary_expression "iVar39 == 8" identifier == number_literal) )) (compound_statement "{\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "*local_164 = (char)uVar27;" (assignment_expression "*local_164 = (char)uVar27" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) }) while (parenthesized_expression "(iVar22 < iVar19)" ( (binary_expression "iVar22 < iVar19" identifier < identifier) )) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }" if (parenthesized_expression "(iVar39 != 0)" ( (binary_expression "iVar39 != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }" { (expression_statement "pcVar46 = local_164 + 1;" (assignment_expression "pcVar46 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));" (assignment_expression "*local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f))" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)(uVar27 << (8U - (char)iVar39 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar27 << (8U - (char)iVar39 & 0x1f))" ( (binary_expression "uVar27 << (8U - (char)iVar39 & 0x1f)" identifier << (parenthesized_expression "(8U - (char)iVar39 & 0x1f)" ( (binary_expression "8U - (char)iVar39 & 0x1f" (binary_expression "8U - (char)iVar39" number_literal - (cast_expression "(char)iVar39" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) ))) )))) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) })) })) (expression_statement "iVar14 = iVar19 + 0xe;" (assignment_expression "iVar14 = iVar19 + 0xe" identifier = (binary_expression "iVar19 + 0xe" identifier + number_literal)) ;) (if_statement "if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }" if (parenthesized_expression "(-1 < iVar19 + 7)" ( (binary_expression "-1 < iVar19 + 7" number_literal < (binary_expression "iVar19 + 7" identifier + number_literal)) )) (compound_statement "{\n            iVar14 = iVar19 + 7;\n          }" { (expression_statement "iVar14 = iVar19 + 7;" (assignment_expression "iVar14 = iVar19 + 7" identifier = (binary_expression "iVar19 + 7" identifier + number_literal)) ;) })) (if_statement "if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }" if (parenthesized_expression "(iVar14 >> 3 < (int)uVar17)" ( (binary_expression "iVar14 >> 3 < (int)uVar17" (binary_expression "iVar14 >> 3" identifier >> number_literal) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));" do (compound_statement "{\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            }" { (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)))" ( (binary_expression "pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3))" identifier != (binary_expression "pcVar46 + (uVar17 - (iVar14 >> 3))" identifier + (parenthesized_expression "(uVar17 - (iVar14 >> 3))" ( (binary_expression "uVar17 - (iVar14 >> 3)" identifier - (parenthesized_expression "(iVar14 >> 3)" ( (binary_expression "iVar14 >> 3" identifier >> number_literal) ))) )))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier (argument_list "(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_14c;" (assignment_expression "bVar42 = 0xfffffffe < local_14c" identifier = (binary_expression "0xfffffffe < local_14c" number_literal < identifier)) ;) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "iStack_148 = iStack_148 + (uint)bVar42;" (assignment_expression "iStack_148 = iStack_148 + (uint)bVar42" identifier = (binary_expression "iStack_148 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar16 < iVar14)" ( (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;)) (case_statement "case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "iStack_148 = 0;" (assignment_expression "iStack_148 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" ( (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }" { (expression_statement "bVar42 = false;" (assignment_expression "bVar42 = false" identifier = false) ;) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);" do (compound_statement "{\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              }" { (expression_statement "uVar27 = uVar27 << 4;" (assignment_expression "uVar27 = uVar27 << 4" identifier = (binary_expression "uVar27 << 4" identifier << number_literal)) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" * (cast_expression "(int *)(param_2[0xaa] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x40)" ( (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }" { (expression_statement "local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));" (assignment_expression "local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier = (cast_expression "(uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier (argument_list "(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" * (cast_expression "(int *)(param_2[0xaa] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x44)" ( (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))) )))))) ;) (expression_statement "uVar27 = uVar27 | local_e4 & 0xf;" (assignment_expression "uVar27 = uVar27 | local_e4 & 0xf" identifier = (binary_expression "uVar27 | local_e4 & 0xf" identifier | (binary_expression "local_e4 & 0xf" identifier & number_literal))) ;) })) (expression_statement "bVar42 = !bVar42;" (assignment_expression "bVar42 = !bVar42" identifier = (unary_expression "!bVar42" ! identifier)) ;) (if_statement "if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }" if (parenthesized_expression "(!bVar42)" ( (unary_expression "!bVar42" ! identifier) )) (compound_statement "{\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }" { (expression_statement "*local_164 = (char)uVar27;" (assignment_expression "*local_164 = (char)uVar27" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) }) while (parenthesized_expression "(iVar39 < iVar19)" ( (binary_expression "iVar39 < iVar19" identifier < identifier) )) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }" if (parenthesized_expression "(bVar42)" ( identifier )) (compound_statement "{\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }" { (expression_statement "pcVar46 = local_164 + 1;" (assignment_expression "pcVar46 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = (char)(uVar27 << 4);" (assignment_expression "*local_164 = (char)(uVar27 << 4)" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)(uVar27 << 4)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar27 << 4)" ( (binary_expression "uVar27 << 4" identifier << number_literal) )))) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) })) })) (expression_statement "iVar14 = (iVar19 + 1) / 2;" (assignment_expression "iVar14 = (iVar19 + 1) / 2" identifier = (binary_expression "(iVar19 + 1) / 2" (parenthesized_expression "(iVar19 + 1)" ( (binary_expression "iVar19 + 1" identifier + number_literal) )) / number_literal)) ;) (if_statement "if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }" if (parenthesized_expression "(iVar14 < (int)uVar17)" ( (binary_expression "iVar14 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));" do (compound_statement "{\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              }" { (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar30 != pcVar46 + (uVar17 - iVar14))" ( (binary_expression "pcVar30 != pcVar46 + (uVar17 - iVar14)" identifier != (binary_expression "pcVar46 + (uVar17 - iVar14)" identifier + (parenthesized_expression "(uVar17 - iVar14)" ( (binary_expression "uVar17 - iVar14" identifier - identifier) )))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier (argument_list "(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_14c;" (assignment_expression "bVar42 = 0xfffffffe < local_14c" identifier = (binary_expression "0xfffffffe < local_14c" number_literal < identifier)) ;) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "iStack_148 = iStack_148 + (uint)bVar42;" (assignment_expression "iStack_148 = iStack_148 + (uint)bVar42" identifier = (binary_expression "iStack_148 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar16 < iVar14)" ( (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;" case number_literal : (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar27,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;" (assignment_expression "pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar27 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar27 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar27 + param_2[7])" ( (binary_expression "~uVar27 + param_2[7]" (unary_expression "~uVar27" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (expression_statement "pcVar46 = pcVar38;" (assignment_expression "pcVar46 = pcVar38" identifier = identifier) ;) (if_statement "if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" if (parenthesized_expression "(param_2[6] < 1)" ( (binary_expression "param_2[6] < 1" (subscript_expression "param_2[6]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "pcVar30 = pcVar38;" (assignment_expression "pcVar30 = pcVar38" identifier = identifier) ;) }) (else_clause "else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" else (compound_statement "{\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" { (do_statement "do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);" do (compound_statement "{\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              }" { (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" * (cast_expression "(int *)(param_2[0xaa] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x40)" ( (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }" { (expression_statement "cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));" (assignment_expression "cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier = (cast_expression "(char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier (argument_list "(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (pointer_expression "*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" * (cast_expression "(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" * (cast_expression "(int *)(param_2[0xaa] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x44)" ( (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))) )))))) ;) })) (expression_statement "pcVar30 = pcVar46 + 1;" (assignment_expression "pcVar30 = pcVar46 + 1" identifier = (binary_expression "pcVar46 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar46 = cVar24;" (assignment_expression "*pcVar46 = cVar24" (pointer_expression "*pcVar46" * identifier) = identifier) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = (int)pcVar30 - (int)pcVar38;" (assignment_expression "iVar19 = (int)pcVar30 - (int)pcVar38" identifier = (binary_expression "(int)pcVar30 - (int)pcVar38" (cast_expression "(int)pcVar30" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar38" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar46 = pcVar30;" (assignment_expression "pcVar46 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(iVar19 < param_2[6])" ( (binary_expression "iVar19 < param_2[6]" identifier < (subscript_expression "param_2[6]" identifier [ number_literal ])) )) ;) }))) (if_statement "if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }" if (parenthesized_expression "(iVar19 < (int)uVar17)" ( (binary_expression "iVar19 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }" { (expression_statement "pcVar46 = pcVar30;" (assignment_expression "pcVar46 = pcVar30" identifier = identifier) ;) (do_statement "do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));" do (compound_statement "{\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              }" { (expression_statement "pcVar38 = pcVar46 + 1;" (assignment_expression "pcVar38 = pcVar46 + 1" identifier = (binary_expression "pcVar46 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar46 = '\0';" (assignment_expression "*pcVar46 = '\0'" (pointer_expression "*pcVar46" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar46 = pcVar38;" (assignment_expression "pcVar46 = pcVar38" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar38 != pcVar30 + (uVar17 - iVar19))" ( (binary_expression "pcVar38 != pcVar30 + (uVar17 - iVar19)" identifier != (binary_expression "pcVar30 + (uVar17 - iVar19)" identifier + (parenthesized_expression "(uVar17 - iVar19)" ( (binary_expression "uVar17 - iVar19" identifier - identifier) )))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0)" identifier (argument_list "(param_2,"Save/Image",local_164,local_160,iVar14,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_164;" (assignment_expression "bVar42 = 0xfffffffe < local_164" identifier = (binary_expression "0xfffffffe < local_164" number_literal < identifier)) ;) (expression_statement "local_164 = (char *)((int)local_164 + 1);" (assignment_expression "local_164 = (char *)((int)local_164 + 1)" identifier = (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_160 = local_160 + (uint)bVar42;" (assignment_expression "local_160 = local_160 + (uint)bVar42" identifier = (binary_expression "local_160 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar27 < iVar14)" ( (binary_expression "(int)uVar27 < iVar14" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (labeled_statement "LAB_001d23a7:\n        bVar42 = bVar11 != 2;" statement_identifier : (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;)) (expression_statement "bVar43 = CONCAT11(uStack_17b,local_17c) == 8;" (assignment_expression "bVar43 = CONCAT11(uStack_17b,local_17c) == 8" identifier = (binary_expression "CONCAT11(uStack_17b,local_17c) == 8" (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) == number_literal)) ;) (expression_statement "bVar29 = bVar43 && bVar42;" (assignment_expression "bVar29 = bVar43 && bVar42" identifier = (binary_expression "bVar43 && bVar42" identifier && identifier)) ;) (if_statement "if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;" if (parenthesized_expression "((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10))" ( (binary_expression "(!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)" (parenthesized_expression "(!bVar43 || !bVar42)" ( (binary_expression "!bVar43 || !bVar42" (unary_expression "!bVar43" ! identifier) || (unary_expression "!bVar42" ! identifier)) )) || (parenthesized_expression "(bVar42 = bVar29, *param_1 == 0x10)" ( (comma_expression "bVar42 = bVar29, *param_1 == 0x10" (assignment_expression "bVar42 = bVar29" identifier = identifier) , (binary_expression "*param_1 == 0x10" (pointer_expression "*param_1" * identifier) == number_literal)) ))) )) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;)) (expression_statement "iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);" (assignment_expression "iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2)" identifier = (call_expression "AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2)" identifier (argument_list "(uVar16 * 8 + 6,param_2[7] + 2)" ( (binary_expression "uVar16 * 8 + 6" (binary_expression "uVar16 * 8" identifier * number_literal) + number_literal) , (binary_expression "param_2[7] + 2" (subscript_expression "param_2[7]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" { (expression_statement "puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);" (assignment_expression "puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14)" identifier = (cast_expression "(undefined2 *)GetVirtualMemoryBlob(iVar14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetVirtualMemoryBlob(iVar14)" identifier (argument_list "(iVar14)" ( identifier ))))) ;) (if_statement "if (param_2[0xcd1] != -0x54535255) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" if (parenthesized_expression "(param_2[0xcd1] != -0x54535255)" ( (binary_expression "param_2[0xcd1] != -0x54535255" (subscript_expression "param_2[0xcd1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""EncodeImage"" " string_content ") ))) ;) })) (if_statement "if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }" if (parenthesized_expression "(param_2[0xcca] != 0)" ( (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }" { (expression_statement "LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);" (call_expression "LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6)" identifier (argument_list "(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""EncodeImage"" " string_content ") , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) })) (if_statement "if (puVar21 == (undefined2 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" if (parenthesized_expression "(puVar21 == (undefined2 *)0x0)" ( (binary_expression "puVar21 == (undefined2 *)0x0" identifier == (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" { comment (expression_statement "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");" (call_expression "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" identifier (argument_list "("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" ( (string_literal ""compressed_pixels != (unsigned char *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""EncodeImage"" " string_content ") ))) ;) })) (expression_statement "local_164 = (char *)puVar21;" (assignment_expression "local_164 = (char *)puVar21" identifier = (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }" { (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" identifier = number_literal) ;) (expression_statement "iStack_130 = 0;" (assignment_expression "iStack_130 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);" do (compound_statement "{\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }" { (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 1" identifier = number_literal) ;) (if_statement "if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }" if (parenthesized_expression "(1 < uVar17)" ( (binary_expression "1 < uVar17" number_literal < identifier) )) (compound_statement "{\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }" { (do_statement "do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);" do (compound_statement "{\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  }" { (if_statement "if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" if (parenthesized_expression "(*local_168 == local_168[1])" ( (binary_expression "*local_168 == local_168[1]" (pointer_expression "*local_168" * identifier) == (subscript_expression "local_168[1]" identifier [ number_literal ])) )) (compound_statement "{\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }" { (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 1" identifier = number_literal) ;) (expression_statement "pcVar46 = local_168 + 2;" (assignment_expression "pcVar46 = local_168 + 2" identifier = (binary_expression "local_168 + 2" identifier + number_literal)) ;) (do_statement "do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);" do (compound_statement "{\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "iVar40 = iVar39 + iVar22;" (assignment_expression "iVar40 = iVar39 + iVar22" identifier = (binary_expression "iVar39 + iVar22" identifier + identifier)) ;) (if_statement "if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }" if (parenthesized_expression "(iVar22 == uVar17 - iVar39)" ( (binary_expression "iVar22 == uVar17 - iVar39" identifier == (binary_expression "uVar17 - iVar39" identifier - identifier)) )) (compound_statement "{\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }" { (expression_statement "pcVar38 = local_168 + iVar22;" (assignment_expression "pcVar38 = local_168 + iVar22" identifier = (binary_expression "local_168 + iVar22" identifier + identifier)) ;) (break_statement "break;" break ;) })) (if_statement "if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }" if (parenthesized_expression "(iVar22 == 0xff)" ( (binary_expression "iVar22 == 0xff" identifier == number_literal) )) (compound_statement "{\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }" { (expression_statement "iVar22 = -1;" (assignment_expression "iVar22 = -1" identifier = number_literal) ;) (expression_statement "pcVar38 = local_168 + 0xff;" (assignment_expression "pcVar38 = local_168 + 0xff" identifier = (binary_expression "local_168 + 0xff" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar46 = pcVar38 + 1;" (assignment_expression "pcVar46 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar38 == *local_168)" ( (binary_expression "*pcVar38 == *local_168" (pointer_expression "*pcVar38" * identifier) == (pointer_expression "*local_168" * identifier)) )) ;) (expression_statement "*local_164 = (char)iVar22;" (assignment_expression "*local_164 = (char)iVar22" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)iVar22" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar46 = (char *)((int)local_164 + 2);" (assignment_expression "pcVar46 = (char *)((int)local_164 + 2)" identifier = (cast_expression "(char *)((int)local_164 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 2)" ( (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" * (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "iVar39 = iVar40;" (assignment_expression "iVar39 = iVar40" identifier = identifier) ;) (expression_statement "local_168 = pcVar38;" (assignment_expression "local_168 = pcVar38" identifier = identifier) ;) (if_statement "if ((int)uVar17 <= iVar40) goto LAB_001d2581;" if (parenthesized_expression "((int)uVar17 <= iVar40)" ( (binary_expression "(int)uVar17 <= iVar40" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_001d2581;" goto statement_identifier ;)) }) (else_clause "else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" else (compound_statement "{\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" { (expression_statement "pcVar38 = local_168 + 1;" (assignment_expression "pcVar38 = local_168 + 1" identifier = (binary_expression "local_168 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = 1;" (assignment_expression "*local_164 = 1" (pointer_expression "*local_164" * identifier) = number_literal) ;) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" * (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "iVar39 = iVar22;" (assignment_expression "iVar39 = iVar22" identifier = identifier) ;) }))) (expression_statement "local_164 = (char *)((int)local_164 + 2);" (assignment_expression "local_164 = (char *)((int)local_164 + 2)" identifier = (cast_expression "(char *)((int)local_164 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 2)" ( (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar22 = iVar39 + 1;" (assignment_expression "iVar22 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "local_168 = pcVar38;" (assignment_expression "local_168 = pcVar38" identifier = identifier) ;) }) while (parenthesized_expression "(iVar22 < (int)uVar17)" ( (binary_expression "iVar22 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "*local_164 = 1;" (assignment_expression "*local_164 = 1" (pointer_expression "*local_164" * identifier) = number_literal) ;) (expression_statement "pcVar46 = (char *)((int)local_164 + 2);" (assignment_expression "pcVar46 = (char *)((int)local_164 + 2)" identifier = (cast_expression "(char *)((int)local_164 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 2)" ( (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" * (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "local_168 = local_168 + 1;" (assignment_expression "local_168 = local_168 + 1" identifier = (binary_expression "local_168 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);" statement_identifier : (expression_statement "local_164 = (char *)((int)pcVar46 + 2);" (assignment_expression "local_164 = (char *)((int)pcVar46 + 2)" identifier = (cast_expression "(char *)((int)pcVar46 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pcVar46 + 2)" ( (binary_expression "(int)pcVar46 + 2" (cast_expression "(int)pcVar46" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "*(undefined2 *)pcVar46 = 0;" (assignment_expression "*(undefined2 *)pcVar46 = 0" (pointer_expression "*(undefined2 *)pcVar46" * (cast_expression "(undefined2 *)pcVar46" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);" (assignment_expression "iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" identifier (argument_list "(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , (subscript_expression "param_2[7]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar39 == 0) break;" if (parenthesized_expression "(iVar39 == 0)" ( (binary_expression "iVar39 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_134;" (assignment_expression "bVar42 = 0xfffffffe < local_134" identifier = (binary_expression "0xfffffffe < local_134" number_literal < identifier)) ;) (expression_statement "local_134 = local_134 + 1;" (assignment_expression "local_134 = local_134 + 1" identifier = (binary_expression "local_134 + 1" identifier + number_literal)) ;) (expression_statement "iStack_130 = iStack_130 + (uint)bVar42;" (assignment_expression "iStack_130 = iStack_130 + (uint)bVar42" identifier = (binary_expression "iStack_130 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar19 < param_2[7])" ( (binary_expression "iVar19 < param_2[7]" identifier < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) ;) })) (expression_statement "local_164[0] = '\0';" (assignment_expression "local_164[0] = '\0'" (subscript_expression "local_164[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_164[1] = '\x01';" (assignment_expression "local_164[1] = '\x01'" (subscript_expression "local_164[1]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_a8 = (int)local_164 + (2 - (int)puVar21);" (assignment_expression "local_a8 = (int)local_164 + (2 - (int)puVar21)" identifier = (binary_expression "(int)local_164 + (2 - (int)puVar21)" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(2 - (int)puVar21)" ( (binary_expression "2 - (int)puVar21" number_literal - (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_128 = local_a8 + local_c8;" (assignment_expression "local_128 = local_a8 + local_c8" identifier = (binary_expression "local_a8 + local_c8" identifier + identifier)) ;) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "local_ac = 1;" (assignment_expression "local_ac = 1" identifier = number_literal) ;) (expression_statement "local_124 = iVar14;" (assignment_expression "local_124 = iVar14" identifier = identifier) ;) (if_statement "if (param_2[0xcca] == 0) goto LAB_001d14a8;" if (parenthesized_expression "(param_2[0xcca] == 0)" ( (binary_expression "param_2[0xcca] == 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001d14a8;" goto statement_identifier ;)) (goto_statement "goto LAB_001d2640;" goto statement_identifier ;) })) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);" (call_expression "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" identifier (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , number_literal , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" while (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" ( (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" identifier = identifier) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" { (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" identifier = (cast_expression "(int *)piVar8[0xccf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0xccf]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_001d3a2a;" goto statement_identifier ;)) (case_statement "case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "local_104 = 0;" (assignment_expression "local_104 = 0" identifier = number_literal) ;) (expression_statement "iStack_100 = 0;" (assignment_expression "iStack_100 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);" do (compound_statement "{\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          }" { (expression_statement "iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);" (assignment_expression "iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,local_14c,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar19 == 0) break;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (expression_statement "iVar22 = param_2[6];" (assignment_expression "iVar22 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);" (assignment_expression "puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" identifier = (cast_expression "(ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" ( (binary_expression "local_168 + ((iVar39 + -1) - local_14c) * uVar17" identifier + (binary_expression "((iVar39 + -1) - local_14c) * uVar17" (parenthesized_expression "((iVar39 + -1) - local_14c)" ( (binary_expression "(iVar39 + -1) - local_14c" (parenthesized_expression "(iVar39 + -1)" ( (binary_expression "iVar39 + -1" identifier + number_literal) )) - identifier) )) * identifier)) )))) ;) (expression_statement "puVar32 = puVar20;" (assignment_expression "puVar32 = puVar20" identifier = identifier) ;) (if_statement "if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }" if (parenthesized_expression "(0 < iVar22)" ( (binary_expression "0 < iVar22" number_literal < identifier) )) (compound_statement "{\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }" { (expression_statement "iVar40 = param_2[0xa6];" (assignment_expression "iVar40 = param_2[0xa6]" identifier = (subscript_expression "param_2[0xa6]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = param_2[0xaa];" (assignment_expression "iVar3 = param_2[0xaa]" identifier = (subscript_expression "param_2[0xaa]" identifier [ number_literal ])) ;) (expression_statement "puVar32 = puVar20 + iVar22;" (assignment_expression "puVar32 = puVar20 + iVar22" identifier = (binary_expression "puVar20 + iVar22" identifier + identifier)) ;) (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" identifier = (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (do_statement "do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);" do (compound_statement "{\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              }" { (expression_statement "dVar47 = *(double *)(iVar19 + iVar4 * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + iVar4 * 8)" identifier = (pointer_expression "*(double *)(iVar19 + iVar4 * 8)" * (cast_expression "(double *)(iVar19 + iVar4 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + iVar4 * 8)" ( (binary_expression "iVar19 + iVar4 * 8" identifier + (binary_expression "iVar4 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar14 == 3)" ( (binary_expression "iVar14 == 3" identifier == number_literal) )) (compound_statement "{\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }" { (expression_statement "uVar12 = 0xf000;" (assignment_expression "uVar12 = 0xf000" identifier = number_literal) ;) (if_statement "if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }" if (parenthesized_expression "(*(int *)(iVar3 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar3 + 0x34) != 0" (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }" { (expression_statement "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);" (assignment_expression "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x38) * 8" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }" { (expression_statement "dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar2 * (double)DAT_002a9b74)" ( (binary_expression "dVar2 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }" if (parenthesized_expression "(dVar2 < (double)DAT_0029f714)" ( (binary_expression "dVar2 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }" { (expression_statement "dVar2 = dVar2 + (double)DAT_0029f124;" (assignment_expression "dVar2 = dVar2 + (double)DAT_0029f124" identifier = (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar2)" ( (binary_expression "(double)DAT_0029f134 <= dVar2" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 - (double)DAT_0029f134)" identifier (argument_list "(dVar2 - (double)DAT_0029f134)" ( (binary_expression "dVar2 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2)" identifier (argument_list "(dVar2)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xc);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xc)" identifier = (call_expression "(ushort)(local_e4 << 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xc)" ( (binary_expression "local_e4 << 0xc" identifier << number_literal) )))) ;) }) (else_clause "else {\n                        uVar12 = 0xf000;\n                      }" else (compound_statement "{\n                        uVar12 = 0xf000;\n                      }" { (expression_statement "uVar12 = 0xf000;" (assignment_expression "uVar12 = 0xf000" identifier = number_literal) ;) }))) })) })) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" ( (binary_expression "dVar47 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      uVar12 = 0xff00;\n                    }" { (expression_statement "uVar12 = 0xff00;" (assignment_expression "uVar12 = 0xff00" identifier = number_literal) ;) }) (else_clause "else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" else (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" else (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 8);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 8)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 8)" identifier | (call_expression "(ushort)(local_e4 << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 8)" ( (binary_expression "local_e4 << 8" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" ( (binary_expression "dVar47 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      uVar12 = 0xfff0;\n                    }" { (expression_statement "uVar12 = 0xfff0;" (assignment_expression "uVar12 = 0xfff0" identifier = number_literal) ;) }) (else_clause "else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" else (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" else (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 4);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 4)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 4)" identifier | (call_expression "(ushort)(local_e4 << 4)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 4)" ( (binary_expression "local_e4 << 4" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" ( (binary_expression "dVar47 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" ( (binary_expression "dVar47 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f134)" ( (binary_expression "dVar47 < (double)DAT_0029f134" identifier < (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" { (labeled_statement "LAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);" statement_identifier : (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;)) }) (else_clause "else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" else (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) (goto_statement "goto LAB_001d21be;" goto statement_identifier ;) })) (labeled_statement "LAB_001d2eba:\n                    uVar12 = 0xffff;" statement_identifier : (expression_statement "uVar12 = 0xffff;" (assignment_expression "uVar12 = 0xffff" identifier = number_literal) ;)) })) }) (else_clause "else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" else (compound_statement "{\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }" { (if_statement "if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" { (expression_statement "uVar12 = 0xf800;" (assignment_expression "uVar12 = 0xf800" identifier = number_literal) ;) (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" ( (binary_expression "dVar47 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xb);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xb)" identifier = (call_expression "(ushort)(local_e4 << 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xb)" ( (binary_expression "local_e4 << 0xb" identifier << number_literal) )))) ;) })) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002cc81c)" ( (binary_expression "dVar47 * (double)DAT_002cc81c" identifier * (cast_expression "(double)DAT_002cc81c" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar12 = 0xffe0;\n                      }" { (expression_statement "uVar12 = 0xffe0;" (assignment_expression "uVar12 = 0xffe0" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" else (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 5);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 5)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 5)" identifier | (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 5)" ( (binary_expression "local_e4 << 5" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" ( (binary_expression "dVar47 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;" if (parenthesized_expression "(dVar47 < (double)DAT_0029f134)" ( (binary_expression "dVar47 < (double)DAT_0029f134" identifier < (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001d2faa;" goto statement_identifier ;)) (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (goto_statement "goto LAB_001d21be;" goto statement_identifier ;) })) (goto_statement "goto LAB_001d2eba;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" else (compound_statement "{\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }" if (parenthesized_expression "((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0))" ( (binary_expression "(iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)" (parenthesized_expression "(iVar14 == 4)" ( (binary_expression "iVar14 == 4" identifier == number_literal) )) && (parenthesized_expression "(uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)" ( (comma_expression "uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0" (assignment_expression "uVar12 = 0x8000" identifier = number_literal) , (binary_expression "*(int *)(iVar3 + 0x34) != 0" (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }" { (expression_statement "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);" (assignment_expression "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x38) * 8" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }" { (expression_statement "dVar2 = dVar2 / (double)DAT_0029f710;" (assignment_expression "dVar2 = dVar2 / (double)DAT_0029f710" identifier = (binary_expression "dVar2 / (double)DAT_0029f710" identifier / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }" if (parenthesized_expression "(dVar2 < (double)DAT_0029f714)" ( (binary_expression "dVar2 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }" { (expression_statement "dVar2 = dVar2 + (double)DAT_0029f124;" (assignment_expression "dVar2 = dVar2 + (double)DAT_0029f124" identifier = (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar2)" ( (binary_expression "(double)DAT_0029f134 <= dVar2" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 - (double)DAT_0029f134)" identifier (argument_list "(dVar2 - (double)DAT_0029f134)" ( (binary_expression "dVar2 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" else (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2)" identifier (argument_list "(dVar2)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xf);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xf)" identifier = (call_expression "(ushort)(local_e4 << 0xf)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xf)" ( (binary_expression "local_e4 << 0xf" identifier << number_literal) )))) ;) }) (else_clause "else {\n                          uVar12 = 0x8000;\n                        }" else (compound_statement "{\n                          uVar12 = 0x8000;\n                        }" { (expression_statement "uVar12 = 0x8000;" (assignment_expression "uVar12 = 0x8000" identifier = number_literal) ;) }))) })) })) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar12 = 0xfc00;\n                      }" { (expression_statement "uVar12 = 0xfc00;" (assignment_expression "uVar12 = 0xfc00" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" else (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 10);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 10)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 10)" identifier | (call_expression "(ushort)(local_e4 << 10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 10)" ( (binary_expression "local_e4 << 10" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar12 = 0xffe0;\n                      }" { (expression_statement "uVar12 = 0xffe0;" (assignment_expression "uVar12 = 0xffe0" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" else (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 5);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 5)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 5)" identifier | (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 5)" ( (binary_expression "local_e4 << 5" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_001d2eba;" goto statement_identifier ;)) (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" else (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" { (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (labeled_statement "LAB_001d21be:\n                      uVar12 = uVar12 | uVar26;" statement_identifier : (expression_statement "uVar12 = uVar12 | uVar26;" (assignment_expression "uVar12 = uVar12 | uVar26" identifier = (binary_expression "uVar12 | uVar26" identifier | identifier)) ;)) })) }))) }))) (expression_statement "*puVar20 = uVar12;" (assignment_expression "*puVar20 = uVar12" (pointer_expression "*puVar20" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + iVar40 * 8;" (assignment_expression "iVar19 = iVar19 + iVar40 * 8" identifier = (binary_expression "iVar19 + iVar40 * 8" identifier + (binary_expression "iVar40 * 8" identifier * number_literal))) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar20 != puVar32)" ( (binary_expression "puVar20 != puVar32" identifier != identifier) )) ;) })) (if_statement "if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }" if (parenthesized_expression "(uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0)" ( (binary_expression "uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0" (binary_expression "uVar17 != iVar22 * 2" identifier != (binary_expression "iVar22 * 2" identifier * number_literal)) && (binary_expression "SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0" (call_expression "SBORROW4(uVar17,iVar22 * 2)" identifier (argument_list "(uVar17,iVar22 * 2)" ( identifier , (binary_expression "iVar22 * 2" identifier * number_literal) ))) == (binary_expression "(int)(uVar17 + iVar22 * -2) < 0" (cast_expression "(int)(uVar17 + iVar22 * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar17 + iVar22 * -2)" ( (binary_expression "uVar17 + iVar22 * -2" identifier + (binary_expression "iVar22 * -2" identifier * number_literal)) ))) < number_literal))) )) (compound_statement "{\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }" { (expression_statement "puVar20 = puVar32;" (assignment_expression "puVar20 = puVar32" identifier = identifier) ;) (do_statement "do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));" do (compound_statement "{\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              }" { (expression_statement "puVar33 = (ushort *)((int)puVar20 + 1);" (assignment_expression "puVar33 = (ushort *)((int)puVar20 + 1)" identifier = (cast_expression "(ushort *)((int)puVar20 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar20 + 1)" ( (binary_expression "(int)puVar20 + 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)puVar20 = '\0';" (assignment_expression "*(char *)puVar20 = '\0'" (pointer_expression "*(char *)puVar20" * (cast_expression "(char *)puVar20" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar20 = puVar33;" (assignment_expression "puVar20 = puVar33" identifier = identifier) ;) }) while (parenthesized_expression "(puVar33 != puVar32 + (uVar16 * 2 - iVar22))" ( (binary_expression "puVar33 != puVar32 + (uVar16 * 2 - iVar22)" identifier != (binary_expression "puVar32 + (uVar16 * 2 - iVar22)" identifier + (parenthesized_expression "(uVar16 * 2 - iVar22)" ( (binary_expression "uVar16 * 2 - iVar22" (binary_expression "uVar16 * 2" identifier * number_literal) - identifier) )))) )) ;) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (if_statement "if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }" { (expression_statement "iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);" (assignment_expression "iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" identifier (argument_list "(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar19 == 0) break;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_104;" (assignment_expression "bVar42 = 0xfffffffe < local_104" identifier = (binary_expression "0xfffffffe < local_104" number_literal < identifier)) ;) (expression_statement "local_104 = local_104 + 1;" (assignment_expression "local_104 = local_104 + 1" identifier = (binary_expression "local_104 + 1" identifier + number_literal)) ;) (expression_statement "iStack_100 = iStack_100 + (uint)bVar42;" (assignment_expression "iStack_100 = iStack_100 + (uint)bVar42" identifier = (binary_expression "iStack_100 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)local_14c < iVar39)" ( (binary_expression "(int)local_14c < iVar39" (cast_expression "(int)local_14c" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_184._4_4_ = 0;" (assignment_expression "local_184._4_4_ = 0" (field_expression "local_184._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" ( (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (if_statement "if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);" do (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x20) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x20)" * (cast_expression "(int *)(param_2[0xaa] + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x20)" ( (binary_expression "param_2[0xaa] + 0x20" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*pcVar38 = cVar24;" (assignment_expression "*pcVar38 = cVar24" (pointer_expression "*pcVar38" * identifier) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x14) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x14)" * (cast_expression "(int *)(param_2[0xaa] + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x14)" ( (binary_expression "param_2[0xaa] + 0x14" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "pcVar46 = pcVar38 + 3;" (assignment_expression "pcVar46 = pcVar38 + 3" identifier = (binary_expression "pcVar38 + 3" identifier + number_literal)) ;) (expression_statement "pcVar38[1] = cVar24;" (assignment_expression "pcVar38[1] = cVar24" (subscript_expression "pcVar38[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 8) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 8) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 8)" * (cast_expression "(int *)(param_2[0xaa] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 8)" ( (binary_expression "param_2[0xaa] + 8" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "pcVar38[2] = cVar24;" (assignment_expression "pcVar38[2] = cVar24" (subscript_expression "pcVar38[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) }) while (parenthesized_expression "(iVar39 < iVar19)" ( (binary_expression "iVar39 < iVar19" identifier < identifier) )) ;) })) (if_statement "if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }" if (parenthesized_expression "(iVar19 * 3 < (int)uVar17)" ( (binary_expression "iVar19 * 3 < (int)uVar17" (binary_expression "iVar19 * 3" identifier * number_literal) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);" do (compound_statement "{\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              }" { (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar30 != pcVar46 + uVar17 + iVar19 * -3)" ( (binary_expression "pcVar30 != pcVar46 + uVar17 + iVar19 * -3" identifier != (binary_expression "pcVar46 + uVar17 + iVar19 * -3" (binary_expression "pcVar46 + uVar17" identifier + identifier) + (binary_expression "iVar19 * -3" identifier * number_literal))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" identifier (argument_list "(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) , (field_expression "local_184._4_4_" identifier . field_identifier) , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < (uint)local_184;" (assignment_expression "bVar42 = 0xfffffffe < (uint)local_184" identifier = (binary_expression "0xfffffffe < (uint)local_184" number_literal < (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "local_184._4_4_ = local_184._4_4_ + (uint)bVar42;" (assignment_expression "local_184._4_4_ = local_184._4_4_ + (uint)bVar42" (field_expression "local_184._4_4_" identifier . field_identifier) = (binary_expression "local_184._4_4_ + (uint)bVar42" (field_expression "local_184._4_4_" identifier . field_identifier) + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar16 < iVar14)" ( (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" case number_literal : (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" identifier = number_literal) ;) (expression_statement "iStack_178 = 0;" (assignment_expression "iStack_178 = 0" identifier = number_literal) ;) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,(uint)local_184,param_2[6],1,param_3)" ( identifier , number_literal , (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }" if (parenthesized_expression "(0 < param_2[6])" ( (binary_expression "0 < param_2[6]" number_literal < (subscript_expression "param_2[6]" identifier [ number_literal ])) )) (compound_statement "{\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;" (assignment_expression "pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17" identifier = (binary_expression "local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17" identifier + (binary_expression "((iVar19 + -1) - (uint)local_184) * uVar17" (parenthesized_expression "((iVar19 + -1) - (uint)local_184)" ( (binary_expression "(iVar19 + -1) - (uint)local_184" (parenthesized_expression "(iVar19 + -1)" ( (binary_expression "iVar19 + -1" identifier + number_literal) )) - (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * identifier))) ;) (do_statement "do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);" do (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x20) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x20)" * (cast_expression "(int *)(param_2[0xaa] + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x20)" ( (binary_expression "param_2[0xaa] + 0x20" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*pcVar46 = cVar24;" (assignment_expression "*pcVar46 = cVar24" (pointer_expression "*pcVar46" * identifier) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x14) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x14)" * (cast_expression "(int *)(param_2[0xaa] + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x14)" ( (binary_expression "param_2[0xaa] + 0x14" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "pcVar46[1] = cVar24;" (assignment_expression "pcVar46[1] = cVar24" (subscript_expression "pcVar46[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 8) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 8) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 8)" * (cast_expression "(int *)(param_2[0xaa] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 8)" ( (binary_expression "param_2[0xaa] + 8" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "pcVar46[2] = cVar24;" (assignment_expression "pcVar46[2] = cVar24" (subscript_expression "pcVar46[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x34) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x34) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x34)" * (cast_expression "(int *)(param_2[0xaa] + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x34)" ( (binary_expression "param_2[0xaa] + 0x34" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x38) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x38)" * (cast_expression "(int *)(param_2[0xaa] + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x38)" ( (binary_expression "param_2[0xaa] + 0x38" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" if (parenthesized_expression "((double)DAT_002a7ff4 <= dVar47)" ( (binary_expression "(double)DAT_002a7ff4 <= dVar47" (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      cVar24 = -1;\n                    }" { (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) }) (else_clause "else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" else (compound_statement "{\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) })) })) (expression_statement "pcVar46[3] = cVar24;" (assignment_expression "pcVar46[3] = cVar24" (subscript_expression "pcVar46[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "pcVar46 = pcVar46 + 4;" (assignment_expression "pcVar46 = pcVar46 + 4" identifier = (binary_expression "pcVar46 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar39 < param_2[6])" ( (binary_expression "iVar39 < param_2[6]" identifier < (subscript_expression "param_2[6]" identifier [ number_literal ])) )) ;) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" identifier (argument_list "(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) (expression_statement "iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;" (assignment_expression "iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" identifier = (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) + number_literal)) ;) (expression_statement "local_17c = (byte)iVar14;" (assignment_expression "local_17c = (byte)iVar14" identifier = (cast_expression "(byte)iVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar14 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar14 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar14 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar14 >> 8)" ( (binary_expression "(uint)iVar14 >> 8" (cast_expression "(uint)iVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar14 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar14 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar14 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar14 >> 0x10)" ( (binary_expression "(uint)iVar14 >> 0x10" (cast_expression "(uint)iVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);" (assignment_expression "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16)" identifier = (binary_expression "iStack_178 + (uint)(0xfffffffe < uVar16)" identifier + (call_expression "(uint)(0xfffffffe < uVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar16)" ( (binary_expression "0xfffffffe < uVar16" number_literal < identifier) ))))) ;) }) while (parenthesized_expression "((int)(uint)local_184 < iVar19)" ( (binary_expression "(int)(uint)local_184 < iVar19" (cast_expression "(int)(uint)local_184" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) < identifier) )) ;) }))) })) (labeled_statement "LAB_001d1490:\n      bVar42 = bVar11 != 2;" statement_identifier : (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;)) (labeled_statement "LAB_001d149a:\n      bVar29 = bVar42;" statement_identifier : (expression_statement "bVar29 = bVar42;" (assignment_expression "bVar29 = bVar42" identifier = identifier) ;)) (if_statement "if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" if (parenthesized_expression "(param_2[0xcca] == 0)" ( (binary_expression "param_2[0xcca] == 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }" { (labeled_statement "LAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;" statement_identifier : (if_statement "if (iVar13 == 0) goto LAB_001d279e;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d279e;" goto statement_identifier ;))) (labeled_statement "LAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);" statement_identifier : (expression_statement "local_164 = (char *)(local_128 + -0xe);" (assignment_expression "local_164 = (char *)(local_128 + -0xe)" identifier = (cast_expression "(char *)(local_128 + -0xe)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_128 + -0xe)" ( (binary_expression "local_128 + -0xe" identifier + number_literal) )))) ;)) (expression_statement "uVar16 = GetStringInfoLength(iVar13);" (assignment_expression "uVar16 = GetStringInfoLength(iVar13)" identifier = (call_expression "GetStringInfoLength(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "local_17c = (byte)uVar16;" (assignment_expression "local_17c = (byte)uVar16" identifier = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(uVar16 >> 8);" (assignment_expression "uStack_17b = (undefined1)(uVar16 >> 8)" identifier = (call_expression "(undefined1)(uVar16 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(uVar16 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(uVar16 >> 0x10)" identifier = (call_expression "(undefined2)(uVar16 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar16 >> 0x10)" ( (binary_expression "uVar16 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar17 = uVar16 & 3;" (assignment_expression "uVar17 = uVar16 & 3" identifier = (binary_expression "uVar16 & 3" identifier & number_literal)) ;) (if_statement "if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          local_174 = 0;\n          local_170 = 0;\n        }" { (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" identifier = number_literal) ;) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" else (compound_statement "{\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" { (expression_statement "local_174 = 4 - uVar17;" (assignment_expression "local_174 = 4 - uVar17" identifier = (binary_expression "4 - uVar17" number_literal - identifier)) ;) (expression_statement "local_170 = -(uint)(4 < uVar17);" (assignment_expression "local_170 = -(uint)(4 < uVar17)" identifier = (unary_expression "-(uint)(4 < uVar17)" - (call_expression "(uint)(4 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(4 < uVar17)" ( (binary_expression "4 < uVar17" number_literal < identifier) ))))) ;) }))) (expression_statement "local_128 = uVar16 + local_128 + local_174;" (assignment_expression "local_128 = uVar16 + local_128 + local_174" identifier = (binary_expression "uVar16 + local_128 + local_174" (binary_expression "uVar16 + local_128" identifier + identifier) + identifier)) ;) }) (else_clause "else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" else (compound_statement "{\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" { (labeled_statement "LAB_001d2640:\n        dVar47 = (double)bVar11;" statement_identifier : (expression_statement "dVar47 = (double)bVar11;" (assignment_expression "dVar47 = (double)bVar11" identifier = (cast_expression "(double)bVar11" ( (type_descriptor "double" primitive_type) ) identifier)) ;)) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Writing BMP version %.20g datastream"" " string_content ") , identifier ))) ;) (if_statement "if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" if (parenthesized_expression "(*param_2 == 1)" ( (binary_expression "*param_2 == 1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Storage class=DirectClass"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" else (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Storage class=PseudoClass"" " string_content ") , identifier ))) ;) }))) (expression_statement "dVar47 = (double)(uint)param_2[8];" (assignment_expression "dVar47 = (double)(uint)param_2[8]" identifier = (cast_expression "(double)(uint)param_2[8]" ( (type_descriptor "double" primitive_type) ) (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])))) ;) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Image depth=%.20g"" " string_content ") , identifier ))) ;) (if_statement "if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" if (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Matte=MagickFalse"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" else (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Matte=True"" " string_content ") , identifier ))) ;) }))) (expression_statement "dVar47 = (double)uVar7;" (assignment_expression "dVar47 = (double)uVar7" identifier = (cast_expression "(double)uVar7" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   BMP bits_per_pixel=%.20g"" " string_content ") , identifier ))) ;) (if_statement "if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" if (parenthesized_expression "(local_ac == 1)" ( (binary_expression "local_ac == 1" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }" { (expression_statement "pcVar46 = "   Compression=BI_RLE8";" (assignment_expression "pcVar46 = "   Compression=BI_RLE8"" identifier = (string_literal ""   Compression=BI_RLE8"" " string_content ")) ;) (expression_statement "uVar45 = 0x8ba;" (assignment_expression "uVar45 = 0x8ba" identifier = number_literal) ;) }) (else_clause "else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" else (if_statement "if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" if (parenthesized_expression "(local_ac == 0)" ( (binary_expression "local_ac == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }" { (expression_statement "pcVar46 = "   Compression=BI_RGB";" (assignment_expression "pcVar46 = "   Compression=BI_RGB"" identifier = (string_literal ""   Compression=BI_RGB"" " string_content ")) ;) (expression_statement "uVar45 = 0x8b4;" (assignment_expression "uVar45 = 0x8b4" identifier = number_literal) ;) }) (else_clause "else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" else (if_statement "if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" if (parenthesized_expression "(local_ac == 3)" ( (binary_expression "local_ac == 3" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }" { (expression_statement "pcVar46 = "   Compression=BI_BITFIELDS";" (assignment_expression "pcVar46 = "   Compression=BI_BITFIELDS"" identifier = (string_literal ""   Compression=BI_BITFIELDS"" " string_content ")) ;) (expression_statement "uVar45 = 0x8c0;" (assignment_expression "uVar45 = 0x8c0" identifier = number_literal) ;) }) (else_clause "else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" else (compound_statement "{\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" { (expression_statement "dVar47 = (double)(ulonglong)local_ac;" (assignment_expression "dVar47 = (double)(ulonglong)local_ac" identifier = (cast_expression "(double)(ulonglong)local_ac" ( (type_descriptor "double" primitive_type) ) (cast_expression "(ulonglong)local_ac" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "pcVar46 = "   Compression=UNKNOWN (%u)";" (assignment_expression "pcVar46 = "   Compression=UNKNOWN (%u)"" identifier = (string_literal ""   Compression=UNKNOWN (%u)"" " string_content ")) ;) (expression_statement "uVar45 = 0x8c6;" (assignment_expression "uVar45 = 0x8c6" identifier = number_literal) ;) }))))))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , identifier , identifier , identifier ))) ;) (if_statement "if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" if (parenthesized_expression "(local_144 == 0)" ( (binary_expression "local_144 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }" { (expression_statement "pcVar46 = "   Number_colors=unspecified";" (assignment_expression "pcVar46 = "   Number_colors=unspecified"" identifier = (string_literal ""   Number_colors=unspecified"" " string_content ")) ;) (expression_statement "uVar45 = 0x8cc;" (assignment_expression "uVar45 = 0x8cc" identifier = number_literal) ;) }) (else_clause "else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" else (compound_statement "{\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" { (expression_statement "pcVar46 = "   Number_colors=%u";" (assignment_expression "pcVar46 = "   Number_colors=%u"" identifier = (string_literal ""   Number_colors=%u"" " string_content ")) ;) (expression_statement "dVar47 = (double)(ulonglong)local_144;" (assignment_expression "dVar47 = (double)(ulonglong)local_144" identifier = (cast_expression "(double)(ulonglong)local_144" ( (type_descriptor "double" primitive_type) ) (cast_expression "(ulonglong)local_144" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar45 = 0x8cf;" (assignment_expression "uVar45 = 0x8cf" identifier = number_literal) ;) }))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , identifier , identifier , identifier ))) ;) (if_statement "if (iVar13 != 0) goto LAB_001d14b4;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001d14b4;" goto statement_identifier ;)) (labeled_statement "LAB_001d279e:\n        local_174 = 0;" statement_identifier : (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" identifier = number_literal) ;)) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" identifier = number_literal) ;) (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "WriteBlob(param_2,2);" (call_expression "WriteBlob(param_2,2)" identifier (argument_list "(param_2,2)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_128);" (call_expression "WriteBlobLSBLong(param_2,local_128)" identifier (argument_list "(param_2,local_128)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,0);" (call_expression "WriteBlobLSBLong(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_c0);" (call_expression "WriteBlobLSBLong(param_2,local_c0)" identifier (argument_list "(param_2,local_c0)" ( identifier , identifier ))) ;) (if_statement "if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" { (expression_statement "WriteBlobLSBLong(param_2,local_bc);" (call_expression "WriteBlobLSBLong(param_2,local_bc)" identifier (argument_list "(param_2,local_bc)" ( identifier , identifier ))) ;) (expression_statement "local_120 = (short)iVar18;" (assignment_expression "local_120 = (short)iVar18" identifier = (cast_expression "(short)iVar18" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "WriteBlobLSBSignedShort(param_2,(int)local_120);" (call_expression "WriteBlobLSBSignedShort(param_2,(int)local_120)" identifier (argument_list "(param_2,(int)local_120)" ( identifier , (cast_expression "(int)local_120" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_11c = (short)iVar28;" (assignment_expression "local_11c = (short)iVar28" identifier = (cast_expression "(short)iVar28" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "WriteBlobLSBSignedShort(param_2,(int)local_11c);" (call_expression "WriteBlobLSBSignedShort(param_2,(int)local_11c)" identifier (argument_list "(param_2,(int)local_11c)" ( identifier , (cast_expression "(int)local_11c" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "WriteBlobLSBShort(param_2,1);" (call_expression "WriteBlobLSBShort(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBShort(param_2,uVar7);" (call_expression "WriteBlobLSBShort(param_2,uVar7)" identifier (argument_list "(param_2,uVar7)" ( identifier , identifier ))) ;) (expression_statement "iVar18 = *param_2;" (assignment_expression "iVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" identifier = (subscript_expression "param_2[0xcca]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" else (compound_statement "{\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" { (expression_statement "WriteBlobLSBLong(param_2,local_bc);" (call_expression "WriteBlobLSBLong(param_2,local_bc)" identifier (argument_list "(param_2,local_bc)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBSignedLong(param_2,iVar18);" (call_expression "WriteBlobLSBSignedLong(param_2,iVar18)" identifier (argument_list "(param_2,iVar18)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBSignedLong(param_2,iVar28);" (call_expression "WriteBlobLSBSignedLong(param_2,iVar28)" identifier (argument_list "(param_2,iVar28)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBShort(param_2,1);" (call_expression "WriteBlobLSBShort(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBShort(param_2,uVar7);" (call_expression "WriteBlobLSBShort(param_2,uVar7)" identifier (argument_list "(param_2,uVar7)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_ac);" (call_expression "WriteBlobLSBLong(param_2,local_ac)" identifier (argument_list "(param_2,local_ac)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_a8);" (call_expression "WriteBlobLSBLong(param_2,local_a8)" identifier (argument_list "(param_2,local_a8)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_a4);" (call_expression "WriteBlobLSBLong(param_2,local_a4)" identifier (argument_list "(param_2,local_a4)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_a0);" (call_expression "WriteBlobLSBLong(param_2,local_a0)" identifier (argument_list "(param_2,local_a0)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_144);" (call_expression "WriteBlobLSBLong(param_2,local_144)" identifier (argument_list "(param_2,local_144)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_144);" (call_expression "WriteBlobLSBLong(param_2,local_144)" identifier (argument_list "(param_2,local_144)" ( identifier , identifier ))) ;) (if_statement "if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }" if (parenthesized_expression "((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0))" ( (binary_expression "(bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)" (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) && (parenthesized_expression "(bVar6 || param_2[0xa5] != 0)" ( (binary_expression "bVar6 || param_2[0xa5] != 0" identifier || (binary_expression "param_2[0xa5] != 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }" { (expression_statement "WriteBlobLSBLong(param_2,local_98);" (call_expression "WriteBlobLSBLong(param_2,local_98)" identifier (argument_list "(param_2,local_98)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_94);" (call_expression "WriteBlobLSBLong(param_2,local_94)" identifier (argument_list "(param_2,local_94)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_90);" (call_expression "WriteBlobLSBLong(param_2,local_90)" identifier (argument_list "(param_2,local_90)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_8c);" (call_expression "WriteBlobLSBLong(param_2,local_8c)" identifier (argument_list "(param_2,local_8c)" ( identifier , identifier ))) ;) (if_statement "if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            WriteBlobLSBLong(param_2,0x73524742);\n          }" { (expression_statement "WriteBlobLSBLong(param_2,0x73524742);" (call_expression "WriteBlobLSBLong(param_2,0x73524742)" identifier (argument_list "(param_2,0x73524742)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" else (compound_statement "{\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" { (expression_statement "WriteBlobLSBLong(param_2,0x4d424544);" (call_expression "WriteBlobLSBLong(param_2,0x4d424544)" identifier (argument_list "(param_2,0x4d424544)" ( identifier , number_literal ))) ;) }))) (expression_statement "dVar47 = *(double *)(param_2 + 0x5d);" (assignment_expression "dVar47 = *(double *)(param_2 + 0x5d)" identifier = (pointer_expression "*(double *)(param_2 + 0x5d)" * (cast_expression "(double *)(param_2 + 0x5d)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5d)" ( (binary_expression "param_2 + 0x5d" identifier + number_literal) ))))) ;) (if_statement "if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" if (parenthesized_expression "((1.0 < dVar47) || (dVar47 <= 0.0))" ( (binary_expression "(1.0 < dVar47) || (dVar47 <= 0.0)" (parenthesized_expression "(1.0 < dVar47)" ( (binary_expression "1.0 < dVar47" number_literal < identifier) )) || (parenthesized_expression "(dVar47 <= 0.0)" ( (binary_expression "dVar47 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }" { (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x5d] = 0;" (assignment_expression "param_2[0x5d] = 0" (subscript_expression "param_2[0x5d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x5e] = 0;" (assignment_expression "param_2[0x5e] = 0" (subscript_expression "param_2[0x5e]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" else (compound_statement "{\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 * (double)DAT_002cc820)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 * (double)DAT_002cc820)" identifier (argument_list "(dVar47 * (double)DAT_002cc820)" ( (binary_expression "dVar47 * (double)DAT_002cc820" identifier * (cast_expression "(double)DAT_002cc820" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) (if_statement "if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x5f))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x5f)" number_literal < (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x5f) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x5f) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }" { (expression_statement "param_2[0x5f] = 0;" (assignment_expression "param_2[0x5f] = 0" (subscript_expression "param_2[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x60] = 0;" (assignment_expression "param_2[0x60] = 0" (subscript_expression "param_2[0x60]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 99))" ( (binary_expression "1.0 < *(double *)(param_2 + 99)" number_literal < (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 99) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 99) <= 0.0" (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }" { (expression_statement "param_2[99] = 0;" (assignment_expression "param_2[99] = 0" (subscript_expression "param_2[99]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[100] = 0;" (assignment_expression "param_2[100] = 0" (subscript_expression "param_2[100]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x65))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x65)" number_literal < (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x65) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x65) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }" { (expression_statement "param_2[0x65] = 0;" (assignment_expression "param_2[0x65] = 0" (subscript_expression "param_2[0x65]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x66] = 0;" (assignment_expression "param_2[0x66] = 0" (subscript_expression "param_2[0x66]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x69))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x69)" number_literal < (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x69) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x69) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }" { (expression_statement "param_2[0x69] = 0;" (assignment_expression "param_2[0x69] = 0" (subscript_expression "param_2[0x69]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x6a] = 0;" (assignment_expression "param_2[0x6a] = 0" (subscript_expression "param_2[0x6a]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x6b))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x6b)" number_literal < (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x6b) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x6b) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }" { (expression_statement "param_2[0x6b] = 0;" (assignment_expression "param_2[0x6b] = 0" (subscript_expression "param_2[0x6b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x6c] = 0;" (assignment_expression "param_2[0x6c] = 0" (subscript_expression "param_2[0x6c]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }" if (parenthesized_expression "((1.0 < local_38) || (local_38 <= 0.0))" ( (binary_expression "(1.0 < local_38) || (local_38 <= 0.0)" (parenthesized_expression "(1.0 < local_38)" ( (binary_expression "1.0 < local_38" number_literal < identifier) )) || (parenthesized_expression "(local_38 <= 0.0)" ( (binary_expression "local_38 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_38 = 0.0;\n          }" { (expression_statement "local_38 = 0.0;" (assignment_expression "local_38 = 0.0" identifier = number_literal) ;) })) (expression_statement "dVar47 = local_38;" (assignment_expression "dVar47 = local_38" identifier = identifier) ;) (if_statement "if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }" if (parenthesized_expression "((1.0 < local_30) || (local_30 <= 0.0))" ( (binary_expression "(1.0 < local_30) || (local_30 <= 0.0)" (parenthesized_expression "(1.0 < local_30)" ( (binary_expression "1.0 < local_30" number_literal < identifier) )) || (parenthesized_expression "(local_30 <= 0.0)" ( (binary_expression "local_30 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_30 = 0.0;\n          }" { (expression_statement "local_30 = 0.0;" (assignment_expression "local_30 = 0.0" identifier = number_literal) ;) })) (expression_statement "dVar2 = local_30;" (assignment_expression "dVar2 = local_30" identifier = identifier) ;) (if_statement "if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }" if (parenthesized_expression "((1.0 < local_28) || (local_28 <= 0.0))" ( (binary_expression "(1.0 < local_28) || (local_28 <= 0.0)" (parenthesized_expression "(1.0 < local_28)" ( (binary_expression "1.0 < local_28" number_literal < identifier) )) || (parenthesized_expression "(local_28 <= 0.0)" ( (binary_expression "local_28 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_28 = 0.0;\n          }" { (expression_statement "local_28 = 0.0;" (assignment_expression "local_28 = 0.0" identifier = number_literal) ;) })) (expression_statement "dVar9 = local_28;" (assignment_expression "dVar9 = local_28" identifier = identifier) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "dVar1 = (double)DAT_002cc820;" (assignment_expression "dVar1 = (double)DAT_002cc820" identifier = (cast_expression "(double)DAT_002cc820" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" identifier = (cast_expression "(uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" identifier (argument_list "((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" ( (binary_expression "(float)*(double *)(param_2 + 0x5f) * DAT_002cc820" (cast_expression "(float)*(double *)(param_2 + 0x5f)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) ))))) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" identifier (argument_list "((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" ( (binary_expression "(1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))" ( (binary_expression "1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f))" number_literal - (parenthesized_expression "(*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f))" ( (binary_expression "*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)" (pointer_expression "*(double *)(param_2 + 0x5d)" * (cast_expression "(double *)(param_2 + 0x5d)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5d)" ( (binary_expression "param_2 + 0x5d" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) ))))) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 99))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 99))" ( (binary_expression "dVar1 * *(double *)(param_2 + 99)" identifier * (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x65))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 0x65))" ( (binary_expression "dVar1 * *(double *)(param_2 + 0x65)" identifier * (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" identifier (argument_list "((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" ( (binary_expression "(1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65)))" ( (binary_expression "1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))" number_literal - (parenthesized_expression "(*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))" ( (binary_expression "*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65)" (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) ))))) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x69))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 0x69))" ( (binary_expression "dVar1 * *(double *)(param_2 + 0x69)" identifier * (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x6b))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 0x6b))" ( (binary_expression "dVar1 * *(double *)(param_2 + 0x6b)" identifier * (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" identifier (argument_list "((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" ( (binary_expression "(1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))" ( (binary_expression "1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b))" number_literal - (parenthesized_expression "(*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b))" ( (binary_expression "*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)" (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) ))))) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "dVar1 = (double)DAT_002b2420;" (assignment_expression "dVar1 = (double)DAT_002b2420" identifier = (cast_expression "(double)DAT_002b2420" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420)" identifier = (cast_expression "(uint)(longlong)ROUND((float)dVar47 * DAT_002b2420)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)dVar47 * DAT_002b2420)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)dVar47 * DAT_002b2420)" identifier (argument_list "((float)dVar47 * DAT_002b2420)" ( (binary_expression "(float)dVar47 * DAT_002b2420" (cast_expression "(float)dVar47" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 * dVar1)" identifier (argument_list "(dVar2 * dVar1)" ( (binary_expression "dVar2 * dVar1" identifier * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar9 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar9 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar9 * dVar1)" identifier (argument_list "(dVar9 * dVar1)" ( (binary_expression "dVar9 * dVar1" identifier * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (if_statement "if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }" if (parenthesized_expression "((param_2[0x75] != 0) || (bVar41))" ( (binary_expression "(param_2[0x75] != 0) || (bVar41)" (parenthesized_expression "(param_2[0x75] != 0)" ( (binary_expression "param_2[0x75] != 0" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(bVar41)" ( identifier ))) )) (compound_statement "{\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }" { (expression_statement "uVar16 = param_2[0x75] - 1;" (assignment_expression "uVar16 = param_2[0x75] - 1" identifier = (binary_expression "param_2[0x75] - 1" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) - number_literal)) ;) (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" identifier = number_literal) ;) (if_statement "if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }" if (parenthesized_expression "(uVar16 < 4)" ( (binary_expression "uVar16 < 4" identifier < number_literal) )) (compound_statement "{\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }" { (expression_statement "uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);" (assignment_expression "uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" identifier = (pointer_expression "*(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" * (cast_expression "(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002cc784 + uVar16 * 4)" ( (binary_expression "&DAT_002cc784 + uVar16 * 4" (pointer_expression "&DAT_002cc784" & identifier) + (binary_expression "uVar16 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "WriteBlobLSBLong(param_2,uVar45);" (call_expression "WriteBlobLSBLong(param_2,uVar45)" identifier (argument_list "(param_2,uVar45)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_164);" (call_expression "WriteBlobLSBLong(param_2,local_164)" identifier (argument_list "(param_2,local_164)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );" (call_expression "WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            )" identifier (argument_list "(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            )" ( identifier , (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) + identifier) ))) ;) (expression_statement "WriteBlobLSBLong(param_2,0);" (call_expression "WriteBlobLSBLong(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal ))) ;) })) })) (expression_statement "iVar18 = *param_2;" (assignment_expression "iVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" identifier = (subscript_expression "param_2[0xcca]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }" if (parenthesized_expression "(iVar18 == 2)" ( (binary_expression "iVar18 == 2" identifier == number_literal) )) (compound_statement "{\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }" { (if_statement "if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }" { (expression_statement "local_184 = (ulonglong)(uint)param_2[9];" (assignment_expression "local_184 = (ulonglong)(uint)param_2[9]" identifier = (cast_expression "(ulonglong)(uint)param_2[9]" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)param_2[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[9]" identifier [ number_literal ])))) ;) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Colormap: %.20g entries"" " string_content ") , (cast_expression "(double)local_184" ( (type_descriptor "double" primitive_type) ) identifier) ))) ;) })) (expression_statement "bVar25 = (byte)local_ae;" (assignment_expression "bVar25 = (byte)local_ae" identifier = (cast_expression "(byte)local_ae" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "iVar14 = 1 << (bVar25 & 0x1f);" (assignment_expression "iVar14 = 1 << (bVar25 & 0x1f)" identifier = (binary_expression "1 << (bVar25 & 0x1f)" number_literal << (parenthesized_expression "(bVar25 & 0x1f)" ( (binary_expression "bVar25 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);" (assignment_expression "puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4)" identifier = (cast_expression "(undefined2 *)AcquireQuantumMemory(iVar14,4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(iVar14,4)" identifier (argument_list "(iVar14,4)" ( identifier , number_literal ))))) ;) (if_statement "if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }" if (parenthesized_expression "(puVar21 == (undefined2 *)0x0)" ( (binary_expression "puVar21 == (undefined2 *)0x0" identifier == (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }" { (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);" (call_expression "ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6)" identifier (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , number_literal , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }" while (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" ( (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" identifier = identifier) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }" { (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" identifier = (cast_expression "(int *)piVar8[0xccf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0xccf]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" identifier = identifier) ;) })) (labeled_statement "LAB_001d3a2a:\n          CloseBlob(piVar35);" statement_identifier : (expression_statement "CloseBlob(piVar35);" (call_expression "CloseBlob(piVar35)" identifier (argument_list "(piVar35)" ( identifier ))) ;)) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_001d3a3a;" goto statement_identifier ;) })) (expression_statement "uVar16 = local_9c;" (assignment_expression "uVar16 = local_9c" identifier = identifier) ;) (if_statement "if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }" if (parenthesized_expression "(param_2[9] <= (int)local_9c)" ( (binary_expression "param_2[9] <= (int)local_9c" (subscript_expression "param_2[9]" identifier [ number_literal ]) <= (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar16 = param_2[9];\n        }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) })) (expression_statement "puVar23 = puVar21;" (assignment_expression "puVar23 = puVar21" identifier = identifier) ;) (if_statement "if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" if (parenthesized_expression "((int)uVar16 < 1)" ( (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          iVar18 = 0;\n        }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" else (compound_statement "{\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);" do (compound_statement "{\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          }" { (expression_statement "dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x30 + iVar28)" identifier = (pointer_expression "*(double *)(param_2[10] + 0x30 + iVar28)" * (cast_expression "(double *)(param_2[10] + 0x30 + iVar28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + 0x30 + iVar28)" ( (binary_expression "param_2[10] + 0x30 + iVar28" (binary_expression "param_2[10] + 0x30" (subscript_expression "param_2[10]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*(undefined1 *)puVar23 = uVar31;" (assignment_expression "*(undefined1 *)puVar23 = uVar31" (pointer_expression "*(undefined1 *)puVar23" * (cast_expression "(undefined1 *)puVar23" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x28 + iVar28)" identifier = (pointer_expression "*(double *)(param_2[10] + 0x28 + iVar28)" * (cast_expression "(double *)(param_2[10] + 0x28 + iVar28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + 0x28 + iVar28)" ( (binary_expression "param_2[10] + 0x28 + iVar28" (binary_expression "param_2[10] + 0x28" (subscript_expression "param_2[10]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*(undefined1 *)((int)puVar23 + 1) = uVar31;" (assignment_expression "*(undefined1 *)((int)puVar23 + 1) = uVar31" (pointer_expression "*(undefined1 *)((int)puVar23 + 1)" * (cast_expression "(undefined1 *)((int)puVar23 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 1)" ( (binary_expression "(int)puVar23 + 1" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x20 + iVar28)" identifier = (pointer_expression "*(double *)(param_2[10] + 0x20 + iVar28)" * (cast_expression "(double *)(param_2[10] + 0x20 + iVar28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + 0x20 + iVar28)" ( (binary_expression "param_2[10] + 0x20 + iVar28" (binary_expression "param_2[10] + 0x20" (subscript_expression "param_2[10]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*(undefined1 *)(puVar23 + 1) = uVar31;" (assignment_expression "*(undefined1 *)(puVar23 + 1) = uVar31" (pointer_expression "*(undefined1 *)(puVar23 + 1)" * (cast_expression "(undefined1 *)(puVar23 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 1)" ( (binary_expression "puVar23 + 1" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" if (parenthesized_expression "(bVar29)" ( identifier )) (compound_statement "{\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }" { (expression_statement "*(undefined1 *)((int)puVar23 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar23 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar23 + 3)" * (cast_expression "(undefined1 *)((int)puVar23 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) }) (else_clause "else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" else (compound_statement "{\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" { (expression_statement "puVar23 = (undefined2 *)((int)puVar23 + 3);" (assignment_expression "puVar23 = (undefined2 *)((int)puVar23 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar23 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar28 = iVar28 + 0x50;" (assignment_expression "iVar28 = iVar28 + 0x50" identifier = (binary_expression "iVar28 + 0x50" identifier + number_literal)) ;) (expression_statement "uVar16 = local_9c;" (assignment_expression "uVar16 = local_9c" identifier = identifier) ;) (if_statement "if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }" if (parenthesized_expression "(param_2[9] <= (int)local_9c)" ( (binary_expression "param_2[9] <= (int)local_9c" (subscript_expression "param_2[9]" identifier [ number_literal ]) <= (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar16 = param_2[9];\n            }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) })) }) while (parenthesized_expression "(iVar18 < (int)uVar16)" ( (binary_expression "iVar18 < (int)uVar16" identifier < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (if_statement "if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }" if (parenthesized_expression "(iVar18 < iVar14)" ( (binary_expression "iVar18 < iVar14" identifier < identifier) )) (compound_statement "{\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }" { (do_statement "do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);" do (compound_statement "{\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          }" { (while_statement "while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }" { (expression_statement "*(undefined1 *)(puVar23 + 1) = 0;" (assignment_expression "*(undefined1 *)(puVar23 + 1) = 0" (pointer_expression "*(undefined1 *)(puVar23 + 1)" * (cast_expression "(undefined1 *)(puVar23 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 1)" ( (binary_expression "puVar23 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (if_statement "if (!bVar29) break;" if (parenthesized_expression "(!bVar29)" ( (unary_expression "!bVar29" ! identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)((int)puVar23 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar23 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar23 + 3)" * (cast_expression "(undefined1 *)((int)puVar23 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) (if_statement "if (iVar18 == iVar14) goto LAB_001d3985;" if (parenthesized_expression "(iVar18 == iVar14)" ( (binary_expression "iVar18 == iVar14" identifier == identifier) )) (goto_statement "goto LAB_001d3985;" goto statement_identifier ;)) })) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar23 = (undefined2 *)((int)puVar23 + 3);" (assignment_expression "puVar23 = (undefined2 *)((int)puVar23 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar23 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar18 != iVar14)" ( (binary_expression "iVar18 != iVar14" identifier != identifier) )) ;) })) (labeled_statement "LAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }" statement_identifier : (if_statement "if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n          iVar14 = 3;\n        }" { (expression_statement "iVar14 = 3;" (assignment_expression "iVar14 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          iVar14 = 4;\n        }" else (compound_statement "{\n          iVar14 = 4;\n        }" { (expression_statement "iVar14 = 4;" (assignment_expression "iVar14 = 4" identifier = number_literal) ;) })))) (expression_statement "WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));" (call_expression "WriteBlob(param_2,iVar14 << (bVar25 & 0x1f))" identifier (argument_list "(param_2,iVar14 << (bVar25 & 0x1f))" ( identifier , (binary_expression "iVar14 << (bVar25 & 0x1f)" identifier << (parenthesized_expression "(bVar25 & 0x1f)" ( (binary_expression "bVar25 & 0x1f" identifier & number_literal) ))) ))) ;) (expression_statement "RelinquishMagickMemory(puVar21);" (call_expression "RelinquishMagickMemory(puVar21)" identifier (argument_list "(puVar21)" ( identifier ))) ;) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" identifier = (subscript_expression "param_2[0xcca]" identifier [ number_literal ])) ;) })) (expression_statement "sVar37 = local_a8;" (assignment_expression "sVar37 = local_a8" identifier = identifier) ;) (if_statement "if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Pixels:  %u bytes"" " string_content ") , identifier ))) ;) })) (expression_statement "WriteBlob(param_2,sVar37);" (call_expression "WriteBlob(param_2,sVar37)" identifier (argument_list "(param_2,sVar37)" ( identifier , identifier ))) ;) (if_statement "if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }" { (if_statement "if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }" if (parenthesized_expression "(param_2[0xcca] != 0)" ( (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Profile:  %g bytes"" " string_content ") , (binary_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174" (cast_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) + (cast_expression "(double)(short)local_174" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)local_174" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ))) ;) })) (expression_statement "GetStringInfoDatum(iVar13);" (call_expression "GetStringInfoDatum(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));" (call_expression "WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)))" identifier (argument_list "(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)))" ( identifier , (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) ))) ;) (if_statement "if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }" if (parenthesized_expression "(local_170 != 0 || local_174 != 0)" ( (binary_expression "local_170 != 0 || local_174 != 0" (binary_expression "local_170 != 0" identifier != number_literal) || (binary_expression "local_174 != 0" identifier != number_literal)) )) (compound_statement "{\n          WriteBlob(param_2,local_174);\n        }" { (expression_statement "WriteBlob(param_2,local_174);" (call_expression "WriteBlob(param_2,local_174)" identifier (argument_list "(param_2,local_174)" ( identifier , identifier ))) ;) })) })) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "iVar13 = GetNextImageInList(param_2);" (assignment_expression "iVar13 = GetNextImageInList(param_2)" identifier = (call_expression "GetNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }" { (labeled_statement "LAB_001d3caf:\n        CloseBlob(param_2);" statement_identifier : (expression_statement "CloseBlob(param_2);" (call_expression "CloseBlob(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001d3a3a;" goto statement_identifier ;) })) (expression_statement "param_2 = (int *)SyncNextImageInList(param_2);" (assignment_expression "param_2 = (int *)SyncNextImageInList(param_2)" identifier = (cast_expression "(int *)SyncNextImageInList(param_2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "SyncNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "uVar17 = local_10c + 1;" (assignment_expression "uVar17 = local_10c + 1" identifier = (binary_expression "local_10c + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = local_108 + (uint)(0xfffffffe < local_10c);" (assignment_expression "iVar14 = local_108 + (uint)(0xfffffffe < local_10c)" identifier = (binary_expression "local_108 + (uint)(0xfffffffe < local_10c)" identifier + (call_expression "(uint)(0xfffffffe < local_10c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < local_10c)" ( (binary_expression "0xfffffffe < local_10c" number_literal < identifier) ))))) ;) (expression_statement "iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);" (assignment_expression "iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0)" identifier (argument_list "(param_2,"Save/Images",local_10c,local_108,uVar15,0)" ( identifier , (string_literal ""Save/Images"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;" if (parenthesized_expression "((iVar13 == 0) || (param_1[3] == 0))" ( (binary_expression "(iVar13 == 0) || (param_1[3] == 0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_001d3caf;" goto statement_identifier ;)) (expression_statement "uVar16 = param_2[1] - 3;" (assignment_expression "uVar16 = param_2[1] - 3" identifier = (binary_expression "param_2[1] - 3" (subscript_expression "param_2[1]" identifier [ number_literal ]) - number_literal)) ;) (expression_statement "local_10c = uVar17;" (assignment_expression "local_10c = uVar17" identifier = identifier) ;) (expression_statement "local_108 = iVar14;" (assignment_expression "local_108 = iVar14" identifier = identifier) ;) (if_statement "if (0x1e < uVar16) break;" if (parenthesized_expression "(0x1e < uVar16)" ( (binary_expression "0x1e < uVar16" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_001d1cae:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0)" ( (binary_expression "(0x403c0001U >> (uVar16 & 0x1f) & 1) != 0" (parenthesized_expression "(0x403c0001U >> (uVar16 & 0x1f) & 1)" ( (binary_expression "0x403c0001U >> (uVar16 & 0x1f) & 1" (binary_expression "0x403c0001U >> (uVar16 & 0x1f)" number_literal >> (parenthesized_expression "(uVar16 & 0x1f)" ( (binary_expression "uVar16 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* WARNING: Enum "LogEventType": Some values do not have unique names */\n\nMagickBooleanType WriteBMPImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  _Image *p_Var6;\n  bool bVar7;\n  double dVar8;\n  ushort value;\n  Image *pIVar9;\n  double dVar10;\n  byte bVar11;\n  byte bVar12;\n  ushort uVar13;\n  MagickBooleanType MVar14;\n  int iVar15;\n  char *pcVar16;\n  size_t sVar17;\n  uint uVar18;\n  ClassType CVar19;\n  uint uVar20;\n  uint uVar21;\n  StringInfo *string_info;\n  int iVar22;\n  Quantum *pQVar23;\n  uchar *data;\n  Image *pIVar24;\n  ushort *puVar25;\n  uint uVar26;\n  MemoryInfo *memory_info;\n  int iVar27;\n  size_t sVar28;\n  undefined2 *data_00;\n  undefined2 *puVar29;\n  char cVar30;\n  byte bVar31;\n  ushort uVar32;\n  bool bVar33;\n  char *pcVar34;\n  size_t sVar35;\n  undefined1 uVar36;\n  char *pcVar37;\n  ushort *puVar38;\n  ushort *puVar39;\n  uint uVar40;\n  uint *puVar41;\n  size_t __n;\n  int iVar42;\n  int in_GS_OFFSET;\n  bool bVar43;\n  bool bVar44;\n  bool bVar45;\n  byte bVar46;\n  size_t sVar47;\n  undefined2 uVar48;\n  undefined4 uVar49;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  size_t local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int local_148;\n  uint local_144;\n  undefined8 local_134;\n  char *local_128;\n  MemoryInfo *local_124;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int local_100;\n  uint local_e4;\n  BMPInfo bmp_info;\n  \n  bVar46 = 0;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);\n  }\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  MVar14 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);\n  if (MVar14 == MagickFalse) {\nLAB_001d3a3a:\n    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return MVar14;\n  }\n  iVar15 = LocaleCompare(image_info->magick,"BMP2");\n  bVar12 = 2;\n  if (iVar15 != 0) {\n    iVar15 = LocaleCompare(image_info->magick,"BMP3");\n    bVar12 = (iVar15 != 0) + 3;\n  }\n  pcVar16 = GetImageOption(image_info,"bmp:format");\n  if (pcVar16 != (char *)0x0) {\n    LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);\n    iVar15 = LocaleCompare(pcVar16,"bmp2");\n    bVar31 = 2;\n    if (iVar15 != 0) {\n      bVar31 = bVar12;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp3");\n    bVar11 = 3;\n    if (iVar15 != 0) {\n      bVar11 = bVar31;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp4");\n    bVar12 = 4;\n    if (iVar15 != 0) {\n      bVar12 = bVar11;\n    }\n  }\n  sVar17 = GetImageListLength(image);\n  local_10c = 0;\n  local_108 = 0;\n  uVar18 = image->colorspace - GRAYColorspace;\n  if (uVar18 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    do {\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);\n  } while( true );\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "MagickBooleanType WriteBMPImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  _Image *p_Var6;\n  bool bVar7;\n  double dVar8;\n  ushort value;\n  Image *pIVar9;\n  double dVar10;\n  byte bVar11;\n  byte bVar12;\n  ushort uVar13;\n  MagickBooleanType MVar14;\n  int iVar15;\n  char *pcVar16;\n  size_t sVar17;\n  uint uVar18;\n  ClassType CVar19;\n  uint uVar20;\n  uint uVar21;\n  StringInfo *string_info;\n  int iVar22;\n  Quantum *pQVar23;\n  uchar *data;\n  Image *pIVar24;\n  ushort *puVar25;\n  uint uVar26;\n  MemoryInfo *memory_info;\n  int iVar27;\n  size_t sVar28;\n  undefined2 *data_00;\n  undefined2 *puVar29;\n  char cVar30;\n  byte bVar31;\n  ushort uVar32;\n  bool bVar33;\n  char *pcVar34;\n  size_t sVar35;\n  undefined1 uVar36;\n  char *pcVar37;\n  ushort *puVar38;\n  ushort *puVar39;\n  uint uVar40;\n  uint *puVar41;\n  size_t __n;\n  int iVar42;\n  int in_GS_OFFSET;\n  bool bVar43;\n  bool bVar44;\n  bool bVar45;\n  byte bVar46;\n  size_t sVar47;\n  undefined2 uVar48;\n  undefined4 uVar49;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  size_t local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int local_148;\n  uint local_144;\n  undefined8 local_134;\n  char *local_128;\n  MemoryInfo *local_124;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int local_100;\n  uint local_e4;\n  BMPInfo bmp_info;\n  \n  bVar46 = 0;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);\n  }\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  MVar14 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);\n  if (MVar14 == MagickFalse) {\nLAB_001d3a3a:\n    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return MVar14;\n  }\n  iVar15 = LocaleCompare(image_info->magick,"BMP2");\n  bVar12 = 2;\n  if (iVar15 != 0) {\n    iVar15 = LocaleCompare(image_info->magick,"BMP3");\n    bVar12 = (iVar15 != 0) + 3;\n  }\n  pcVar16 = GetImageOption(image_info,"bmp:format");\n  if (pcVar16 != (char *)0x0) {\n    LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);\n    iVar15 = LocaleCompare(pcVar16,"bmp2");\n    bVar31 = 2;\n    if (iVar15 != 0) {\n      bVar31 = bVar12;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp3");\n    bVar11 = 3;\n    if (iVar15 != 0) {\n      bVar11 = bVar31;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp4");\n    bVar12 = 4;\n    if (iVar15 != 0) {\n      bVar12 = bVar11;\n    }\n  }\n  sVar17 = GetImageListLength(image);\n  local_10c = 0;\n  local_108 = 0;\n  uVar18 = image->colorspace - GRAYColorspace;\n  if (uVar18 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    do {\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);\n  } while( true );\n}" type_identifier (function_declarator "WriteBMPImage(ImageInfo *image_info,Image *image,ExceptionInfo *exception)" identifier (parameter_list "(ImageInfo *image_info,Image *image,ExceptionInfo *exception)" ( (parameter_declaration "ImageInfo *image_info" type_identifier (pointer_declarator "*image_info" * identifier)) , (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  _Image *p_Var6;\n  bool bVar7;\n  double dVar8;\n  ushort value;\n  Image *pIVar9;\n  double dVar10;\n  byte bVar11;\n  byte bVar12;\n  ushort uVar13;\n  MagickBooleanType MVar14;\n  int iVar15;\n  char *pcVar16;\n  size_t sVar17;\n  uint uVar18;\n  ClassType CVar19;\n  uint uVar20;\n  uint uVar21;\n  StringInfo *string_info;\n  int iVar22;\n  Quantum *pQVar23;\n  uchar *data;\n  Image *pIVar24;\n  ushort *puVar25;\n  uint uVar26;\n  MemoryInfo *memory_info;\n  int iVar27;\n  size_t sVar28;\n  undefined2 *data_00;\n  undefined2 *puVar29;\n  char cVar30;\n  byte bVar31;\n  ushort uVar32;\n  bool bVar33;\n  char *pcVar34;\n  size_t sVar35;\n  undefined1 uVar36;\n  char *pcVar37;\n  ushort *puVar38;\n  ushort *puVar39;\n  uint uVar40;\n  uint *puVar41;\n  size_t __n;\n  int iVar42;\n  int in_GS_OFFSET;\n  bool bVar43;\n  bool bVar44;\n  bool bVar45;\n  byte bVar46;\n  size_t sVar47;\n  undefined2 uVar48;\n  undefined4 uVar49;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  size_t local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int local_148;\n  uint local_144;\n  undefined8 local_134;\n  char *local_128;\n  MemoryInfo *local_124;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int local_100;\n  uint local_e4;\n  BMPInfo bmp_info;\n  \n  bVar46 = 0;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);\n  }\n  if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  MVar14 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);\n  if (MVar14 == MagickFalse) {\nLAB_001d3a3a:\n    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return MVar14;\n  }\n  iVar15 = LocaleCompare(image_info->magick,"BMP2");\n  bVar12 = 2;\n  if (iVar15 != 0) {\n    iVar15 = LocaleCompare(image_info->magick,"BMP3");\n    bVar12 = (iVar15 != 0) + 3;\n  }\n  pcVar16 = GetImageOption(image_info,"bmp:format");\n  if (pcVar16 != (char *)0x0) {\n    LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);\n    iVar15 = LocaleCompare(pcVar16,"bmp2");\n    bVar31 = 2;\n    if (iVar15 != 0) {\n      bVar31 = bVar12;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp3");\n    bVar11 = 3;\n    if (iVar15 != 0) {\n      bVar11 = bVar31;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp4");\n    bVar12 = 4;\n    if (iVar15 != 0) {\n      bVar12 = bVar11;\n    }\n  }\n  sVar17 = GetImageListLength(image);\n  local_10c = 0;\n  local_108 = 0;\n  uVar18 = image->colorspace - GRAYColorspace;\n  if (uVar18 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    do {\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);\n  } while( true );\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar5;" type_identifier (pointer_declarator "*pPVar5" * identifier) ;) (declaration "_Image *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "ushort value;" type_identifier identifier ;) (declaration "Image *pIVar9;" type_identifier (pointer_declarator "*pIVar9" * identifier) ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "ushort uVar13;" type_identifier identifier ;) (declaration "MagickBooleanType MVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "size_t sVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ClassType CVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "StringInfo *string_info;" type_identifier (pointer_declarator "*string_info" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "Quantum *pQVar23;" type_identifier (pointer_declarator "*pQVar23" * identifier) ;) (declaration "uchar *data;" type_identifier (pointer_declarator "*data" * identifier) ;) (declaration "Image *pIVar24;" type_identifier (pointer_declarator "*pIVar24" * identifier) ;) (declaration "ushort *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "MemoryInfo *memory_info;" type_identifier (pointer_declarator "*memory_info" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "size_t sVar28;" primitive_type identifier ;) (declaration "undefined2 *data_00;" type_identifier (pointer_declarator "*data_00" * identifier) ;) (declaration "undefined2 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "char cVar30;" primitive_type identifier ;) (declaration "byte bVar31;" type_identifier identifier ;) (declaration "ushort uVar32;" type_identifier identifier ;) (declaration "bool bVar33;" primitive_type identifier ;) (declaration "char *pcVar34;" primitive_type (pointer_declarator "*pcVar34" * identifier) ;) (declaration "size_t sVar35;" primitive_type identifier ;) (declaration "undefined1 uVar36;" type_identifier identifier ;) (declaration "char *pcVar37;" primitive_type (pointer_declarator "*pcVar37" * identifier) ;) (declaration "ushort *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "ushort *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "uint uVar40;" type_identifier identifier ;) (declaration "uint *puVar41;" type_identifier (pointer_declarator "*puVar41" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar43;" primitive_type identifier ;) (declaration "bool bVar44;" primitive_type identifier ;) (declaration "bool bVar45;" primitive_type identifier ;) (declaration "byte bVar46;" type_identifier identifier ;) (declaration "size_t sVar47;" primitive_type identifier ;) (declaration "undefined2 uVar48;" type_identifier identifier ;) (declaration "undefined4 uVar49;" type_identifier identifier ;) (declaration "undefined8 local_184;" type_identifier identifier ;) (declaration "byte local_17c;" type_identifier identifier ;) (declaration "undefined1 uStack_17b;" type_identifier identifier ;) (declaration "undefined2 uStack_17a;" type_identifier identifier ;) (declaration "int iStack_178;" primitive_type identifier ;) (declaration "size_t local_174;" primitive_type identifier ;) (declaration "int local_170;" primitive_type identifier ;) (declaration "char *local_168;" primitive_type (pointer_declarator "*local_168" * identifier) ;) (declaration "char *local_164;" primitive_type (pointer_declarator "*local_164" * identifier) ;) (declaration "int local_160;" primitive_type identifier ;) (declaration "uint local_14c;" type_identifier identifier ;) (declaration "int local_148;" primitive_type identifier ;) (declaration "uint local_144;" type_identifier identifier ;) (declaration "undefined8 local_134;" type_identifier identifier ;) (declaration "char *local_128;" primitive_type (pointer_declarator "*local_128" * identifier) ;) (declaration "MemoryInfo *local_124;" type_identifier (pointer_declarator "*local_124" * identifier) ;) (declaration "uint local_10c;" type_identifier identifier ;) (declaration "int local_108;" primitive_type identifier ;) (declaration "uint local_104;" type_identifier identifier ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "BMPInfo bmp_info;" type_identifier identifier ;) (expression_statement "bVar46 = 0;" (assignment_expression "bVar46 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(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) ))))) ;) (if_statement "if (image_info == (ImageInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" if (parenthesized_expression "(image_info == (ImageInfo *)0x0)" ( (binary_expression "image_info == (ImageInfo *)0x0" identifier == (cast_expression "(ImageInfo *)0x0" ( (type_descriptor "ImageInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" identifier (argument_list "("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" ( (string_literal ""image_info != (const ImageInfo *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (image_info->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" if (parenthesized_expression "(image_info->signature != 0xabacadab)" ( (binary_expression "image_info->signature != 0xabacadab" (field_expression "image_info->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" identifier (argument_list "("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" ( (string_literal ""image_info->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (image == (Image *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" if (parenthesized_expression "(image == (Image *)0x0)" ( (binary_expression "image == (Image *)0x0" identifier == (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" identifier (argument_list "("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" if (parenthesized_expression "(image->signature != 0xabacadab)" ( (binary_expression "image->signature != 0xabacadab" (field_expression "image->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (image->debug != MagickFalse) {\n    LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);\n  }" if (parenthesized_expression "(image->debug != MagickFalse)" ( (binary_expression "image->debug != MagickFalse" (field_expression "image->debug" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);\n  }" { (expression_statement "LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename);" (call_expression "LogMagickEvent(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename)" identifier (argument_list "(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)image->filename)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""%s"" " string_content ") , (cast_expression "(short)image->filename" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (field_expression "image->filename" identifier -> field_identifier)) ))) ;) })) (if_statement "if (exception == (ExceptionInfo *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" if (parenthesized_expression "(exception == (ExceptionInfo *)0x0)" ( (binary_expression "exception == (ExceptionInfo *)0x0" identifier == (cast_expression "(ExceptionInfo *)0x0" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" { comment (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (exception->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" if (parenthesized_expression "(exception->signature != 0xabacadab)" ( (binary_expression "exception->signature != 0xabacadab" (field_expression "exception->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" { comment (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" identifier (argument_list "("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (expression_statement "MVar14 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception);" (assignment_expression "MVar14 = OpenBlob(image_info,image,WriteBinaryBlobMode,exception)" identifier = (call_expression "OpenBlob(image_info,image,WriteBinaryBlobMode,exception)" identifier (argument_list "(image_info,image,WriteBinaryBlobMode,exception)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (MVar14 == MagickFalse) {\nLAB_001d3a3a:\n    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return MVar14;\n  }" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (compound_statement "{\nLAB_001d3a3a:\n    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }\n    return MVar14;\n  }" { (labeled_statement "LAB_001d3a3a:\n    if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" statement_identifier : (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" if (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 != *(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                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail_local();\n    }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return MVar14;" return identifier ;) })) (expression_statement "iVar15 = LocaleCompare(image_info->magick,"BMP2");" (assignment_expression "iVar15 = LocaleCompare(image_info->magick,"BMP2")" identifier = (call_expression "LocaleCompare(image_info->magick,"BMP2")" identifier (argument_list "(image_info->magick,"BMP2")" ( (field_expression "image_info->magick" identifier -> field_identifier) , (string_literal ""BMP2"" " string_content ") )))) ;) (expression_statement "bVar12 = 2;" (assignment_expression "bVar12 = 2" identifier = number_literal) ;) (if_statement "if (iVar15 != 0) {\n    iVar15 = LocaleCompare(image_info->magick,"BMP3");\n    bVar12 = (iVar15 != 0) + 3;\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar15 = LocaleCompare(image_info->magick,"BMP3");\n    bVar12 = (iVar15 != 0) + 3;\n  }" { (expression_statement "iVar15 = LocaleCompare(image_info->magick,"BMP3");" (assignment_expression "iVar15 = LocaleCompare(image_info->magick,"BMP3")" identifier = (call_expression "LocaleCompare(image_info->magick,"BMP3")" identifier (argument_list "(image_info->magick,"BMP3")" ( (field_expression "image_info->magick" identifier -> field_identifier) , (string_literal ""BMP3"" " string_content ") )))) ;) (expression_statement "bVar12 = (iVar15 != 0) + 3;" (assignment_expression "bVar12 = (iVar15 != 0) + 3" identifier = (binary_expression "(iVar15 != 0) + 3" (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) + number_literal)) ;) })) (expression_statement "pcVar16 = GetImageOption(image_info,"bmp:format");" (assignment_expression "pcVar16 = GetImageOption(image_info,"bmp:format")" identifier = (call_expression "GetImageOption(image_info,"bmp:format")" identifier (argument_list "(image_info,"bmp:format")" ( identifier , (string_literal ""bmp:format"" " string_content ") )))) ;) (if_statement "if (pcVar16 != (char *)0x0) {\n    LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);\n    iVar15 = LocaleCompare(pcVar16,"bmp2");\n    bVar31 = 2;\n    if (iVar15 != 0) {\n      bVar31 = bVar12;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp3");\n    bVar11 = 3;\n    if (iVar15 != 0) {\n      bVar11 = bVar31;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp4");\n    bVar12 = 4;\n    if (iVar15 != 0) {\n      bVar12 = bVar11;\n    }\n  }" if (parenthesized_expression "(pcVar16 != (char *)0x0)" ( (binary_expression "pcVar16 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);\n    iVar15 = LocaleCompare(pcVar16,"bmp2");\n    bVar31 = 2;\n    if (iVar15 != 0) {\n      bVar31 = bVar12;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp3");\n    bVar11 = 3;\n    if (iVar15 != 0) {\n      bVar11 = bVar31;\n    }\n    iVar15 = LocaleCompare(pcVar16,"bmp4");\n    bVar12 = 4;\n    if (iVar15 != 0) {\n      bVar12 = bVar11;\n    }\n  }" { (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)pcVar16)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Format=%s"" " string_content ") , (cast_expression "(short)pcVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) ))) ;) (expression_statement "iVar15 = LocaleCompare(pcVar16,"bmp2");" (assignment_expression "iVar15 = LocaleCompare(pcVar16,"bmp2")" identifier = (call_expression "LocaleCompare(pcVar16,"bmp2")" identifier (argument_list "(pcVar16,"bmp2")" ( identifier , (string_literal ""bmp2"" " string_content ") )))) ;) (expression_statement "bVar31 = 2;" (assignment_expression "bVar31 = 2" identifier = number_literal) ;) (if_statement "if (iVar15 != 0) {\n      bVar31 = bVar12;\n    }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar31 = bVar12;\n    }" { (expression_statement "bVar31 = bVar12;" (assignment_expression "bVar31 = bVar12" identifier = identifier) ;) })) (expression_statement "iVar15 = LocaleCompare(pcVar16,"bmp3");" (assignment_expression "iVar15 = LocaleCompare(pcVar16,"bmp3")" identifier = (call_expression "LocaleCompare(pcVar16,"bmp3")" identifier (argument_list "(pcVar16,"bmp3")" ( identifier , (string_literal ""bmp3"" " string_content ") )))) ;) (expression_statement "bVar11 = 3;" (assignment_expression "bVar11 = 3" identifier = number_literal) ;) (if_statement "if (iVar15 != 0) {\n      bVar11 = bVar31;\n    }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar11 = bVar31;\n    }" { (expression_statement "bVar11 = bVar31;" (assignment_expression "bVar11 = bVar31" identifier = identifier) ;) })) (expression_statement "iVar15 = LocaleCompare(pcVar16,"bmp4");" (assignment_expression "iVar15 = LocaleCompare(pcVar16,"bmp4")" identifier = (call_expression "LocaleCompare(pcVar16,"bmp4")" identifier (argument_list "(pcVar16,"bmp4")" ( identifier , (string_literal ""bmp4"" " string_content ") )))) ;) (expression_statement "bVar12 = 4;" (assignment_expression "bVar12 = 4" identifier = number_literal) ;) (if_statement "if (iVar15 != 0) {\n      bVar12 = bVar11;\n    }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar12 = bVar11;\n    }" { (expression_statement "bVar12 = bVar11;" (assignment_expression "bVar12 = bVar11" identifier = identifier) ;) })) })) (expression_statement "sVar17 = GetImageListLength(image);" (assignment_expression "sVar17 = GetImageListLength(image)" identifier = (call_expression "GetImageListLength(image)" identifier (argument_list "(image)" ( identifier )))) ;) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" identifier = number_literal) ;) (expression_statement "local_108 = 0;" (assignment_expression "local_108 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = image->colorspace - GRAYColorspace;" (assignment_expression "uVar18 = image->colorspace - GRAYColorspace" identifier = (binary_expression "image->colorspace - GRAYColorspace" (field_expression "image->colorspace" identifier -> field_identifier) - identifier)) ;) (if_statement "if (uVar18 < 0x1f) goto LAB_001d1cae;" if (parenthesized_expression "(uVar18 < 0x1f)" ( (binary_expression "uVar18 < 0x1f" identifier < number_literal) )) (goto_statement "goto LAB_001d1cae;" goto statement_identifier ;)) (do_statement "do {\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    do {\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);\n  } while( true );" do (compound_statement "{\n    TransformImageColorspace(image,sRGBColorspace,exception);\n    do {\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);\n  }" { (expression_statement "TransformImageColorspace(image,sRGBColorspace,exception);" (call_expression "TransformImageColorspace(image,sRGBColorspace,exception)" identifier (argument_list "(image,sRGBColorspace,exception)" ( identifier , identifier , identifier ))) ;) (do_statement "do {\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0);" do (compound_statement "{\n      puVar41 = &bmp_info.ba_offset;\n      for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }\n      if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }\n      bmp_info.red_mask = 0xff0000;\n      bmp_info.green_mask = 0xff00;\n      bmp_info.blue_mask = 0xff;\n      bmp_info.alpha_mask = 0xff000000;\n      CVar19 = image->storage_class;\n      bmp_info.offset_bits = uVar18;\n      if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }\n      bmp_info.ba_offset = 0;\n      uVar20 = uVar20 * image->columns + 0x1f >> 5;\n      uVar21 = uVar20 * 4;\n      string_info = GetImageProfile(image,"icc");\n      bVar43 = string_info != (StringInfo *)0x0;\n      bVar7 = true;\n      bVar44 = image->rendering_intent == UndefinedIntent;\n      if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }\n      if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }\n      sVar28 = image->columns;\n      bmp_info.planes = 1;\n      bmp_info.x_pixels = 0xb6d;\n      sVar35 = image->rows;\n      bmp_info.y_pixels = 0xb6d;\n      __n = uVar21 * sVar35;\n      local_128 = (char *)(uVar18 + __n);\n      if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }\n      uVar40 = sVar28 + 0x100;\n      if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }\n      bmp_info.file_size = (uint)local_128;\n      bmp_info.width = sVar28;\n      bmp_info.height = sVar35;\n      bmp_info.image_size = __n;\n      bmp_info.colors_important = local_144;\n      local_124 = AcquireVirtualMemory(sVar35,uVar40);\n      pIVar24 = image;\n      if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,__n);\n      value = CONCAT11(uStack_17b,local_17c);\n      switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }\nLAB_001d1490:\n      bVar44 = bVar12 != 2;\nLAB_001d149a:\n      bVar33 = bVar44;\n      if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(image,2,&DAT_002a251a);\n      WriteBlobLSBLong(image,(uint)local_128);\n      WriteBlobLSBLong(image,0);\n      WriteBlobLSBLong(image,bmp_info.offset_bits);\n      if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }\n      uVar18 = bmp_info.image_size;\n      if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }\n      WriteBlob(image,uVar18,local_168);\n      if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      pIVar24 = GetNextImageInList(image);\n      if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }\n      image = SyncNextImageInList(image);\n      uVar20 = local_10c + 1;\n      iVar15 = local_108 + (uint)(0xfffffffe < local_10c);\n      MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;\n      if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;\n      uVar18 = image->colorspace - GRAYColorspace;\n      local_10c = uVar20;\n      local_108 = iVar15;\n      if (0x1e < uVar18) break;\nLAB_001d1cae:\n    }" { (expression_statement "puVar41 = &bmp_info.ba_offset;" (assignment_expression "puVar41 = &bmp_info.ba_offset" identifier = (pointer_expression "&bmp_info.ba_offset" & (field_expression "bmp_info.ba_offset" identifier . field_identifier))) ;) (for_statement "for (iVar15 = 0x29; iVar15 != 0; iVar15 = iVar15 + -1) {\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }" for ( (assignment_expression "iVar15 = 0x29" identifier = number_literal) ; (binary_expression "iVar15 != 0" identifier != number_literal) ; (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ) (compound_statement "{\n        *puVar41 = 0;\n        puVar41 = puVar41 + (uint)bVar46 * -2 + 1;\n      }" { (expression_statement "*puVar41 = 0;" (assignment_expression "*puVar41 = 0" (pointer_expression "*puVar41" * identifier) = number_literal) ;) (expression_statement "puVar41 = puVar41 + (uint)bVar46 * -2 + 1;" (assignment_expression "puVar41 = puVar41 + (uint)bVar46 * -2 + 1" identifier = (binary_expression "puVar41 + (uint)bVar46 * -2 + 1" (binary_expression "puVar41 + (uint)bVar46 * -2" identifier + (binary_expression "(uint)bVar46 * -2" (cast_expression "(uint)bVar46" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (if_statement "if (bVar12 == 2) {\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }\n      else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }" if (parenthesized_expression "(bVar12 == 2)" ( (binary_expression "bVar12 == 2" identifier == number_literal) )) (compound_statement "{\n        bmp_info.file_size = 0x1a;\n        uVar18 = 0x1a;\n      }" { (expression_statement "bmp_info.file_size = 0x1a;" (assignment_expression "bmp_info.file_size = 0x1a" (field_expression "bmp_info.file_size" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar18 = 0x1a;" (assignment_expression "uVar18 = 0x1a" identifier = number_literal) ;) }) (else_clause "else {\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }" else (compound_statement "{\n        bmp_info.file_size = 0x36;\n        uVar18 = 0x36;\n      }" { (expression_statement "bmp_info.file_size = 0x36;" (assignment_expression "bmp_info.file_size = 0x36" (field_expression "bmp_info.file_size" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar18 = 0x36;" (assignment_expression "uVar18 = 0x36" identifier = number_literal) ;) }))) (expression_statement "bmp_info.red_mask = 0xff0000;" (assignment_expression "bmp_info.red_mask = 0xff0000" (field_expression "bmp_info.red_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.green_mask = 0xff00;" (assignment_expression "bmp_info.green_mask = 0xff00" (field_expression "bmp_info.green_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.blue_mask = 0xff;" (assignment_expression "bmp_info.blue_mask = 0xff" (field_expression "bmp_info.blue_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.alpha_mask = 0xff000000;" (assignment_expression "bmp_info.alpha_mask = 0xff000000" (field_expression "bmp_info.alpha_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "CVar19 = image->storage_class;" (assignment_expression "CVar19 = image->storage_class" identifier = (field_expression "image->storage_class" identifier -> field_identifier)) ;) (expression_statement "bmp_info.offset_bits = uVar18;" (assignment_expression "bmp_info.offset_bits = uVar18" (field_expression "bmp_info.offset_bits" identifier . field_identifier) = identifier) ;) (if_statement "if (CVar19 == PseudoClass) {\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }\n      else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }" if (parenthesized_expression "(CVar19 == PseudoClass)" ( (binary_expression "CVar19 == PseudoClass" identifier == identifier) )) (compound_statement "{\n        uVar20 = image->colors;\n        if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        bmp_info.number_colors = local_144;\n        if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }\n        uVar20 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar15 = 0;\n      }" { (expression_statement "uVar20 = image->colors;" (assignment_expression "uVar20 = image->colors" identifier = (field_expression "image->colors" identifier -> field_identifier)) ;) (if_statement "if (0x100 < uVar20) {\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }" if (parenthesized_expression "(0x100 < uVar20)" ( (binary_expression "0x100 < uVar20" number_literal < identifier) )) (compound_statement "{\n          SetImageStorageClass(image,DirectClass,exception);\n          CVar19 = image->storage_class;\n          goto LAB_001d0f25;\n        }" { (expression_statement "SetImageStorageClass(image,DirectClass,exception);" (call_expression "SetImageStorageClass(image,DirectClass,exception)" identifier (argument_list "(image,DirectClass,exception)" ( identifier , identifier , identifier ))) ;) (expression_statement "CVar19 = image->storage_class;" (assignment_expression "CVar19 = image->storage_class" identifier = (field_expression "image->storage_class" identifier -> field_identifier)) ;) (goto_statement "goto LAB_001d0f25;" goto statement_identifier ;) })) (labeled_statement "LAB_001d0f31:\n        if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" statement_identifier : (if_statement "if (uVar20 < 3) {\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }\n        else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" if (parenthesized_expression "(uVar20 < 3)" ( (binary_expression "uVar20 < 3" identifier < number_literal) )) (compound_statement "{\n          bmp_info.bits_per_pixel = 1;\n          if (image_info->compression == RLECompression) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);\n        }" { (expression_statement "bmp_info.bits_per_pixel = 1;" (assignment_expression "bmp_info.bits_per_pixel = 1" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (if_statement "if (image_info->compression == RLECompression) goto LAB_001d36c0;" if (parenthesized_expression "(image_info->compression == RLECompression)" ( (binary_expression "image_info->compression == RLECompression" (field_expression "image_info->compression" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_001d36c0;" goto statement_identifier ;)) (labeled_statement "LAB_001d0f54:\n          local_17c = (byte)bmp_info.bits_per_pixel;" statement_identifier : (expression_statement "local_17c = (byte)bmp_info.bits_per_pixel;" (assignment_expression "local_17c = (byte)bmp_info.bits_per_pixel" identifier = (cast_expression "(byte)bmp_info.bits_per_pixel" ( (type_descriptor "byte" type_identifier) ) (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier))) ;)) (expression_statement "local_144 = 1 << (local_17c & 0x1f);" (assignment_expression "local_144 = 1 << (local_17c & 0x1f)" identifier = (binary_expression "1 << (local_17c & 0x1f)" number_literal << (parenthesized_expression "(local_17c & 0x1f)" ( (binary_expression "local_17c & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8);" (assignment_expression "uStack_17b = (undefined1)(bmp_info.bits_per_pixel >> 8)" identifier = (call_expression "(undefined1)(bmp_info.bits_per_pixel >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(bmp_info.bits_per_pixel >> 8)" ( (binary_expression "bmp_info.bits_per_pixel >> 8" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) >> number_literal) )))) ;) }) (else_clause "else {\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" else (compound_statement "{\n          bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;\n          if (image_info->compression != RLECompression) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          bmp_info.bits_per_pixel = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" { (expression_statement "bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8;" (assignment_expression "bmp_info.bits_per_pixel = (-(ushort)(uVar20 < 0x11) & 0xfffc) + 8" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = (binary_expression "(-(ushort)(uVar20 < 0x11) & 0xfffc) + 8" (parenthesized_expression "(-(ushort)(uVar20 < 0x11) & 0xfffc)" ( (binary_expression "-(ushort)(uVar20 < 0x11) & 0xfffc" (unary_expression "-(ushort)(uVar20 < 0x11)" - (call_expression "(ushort)(uVar20 < 0x11)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar20 < 0x11)" ( (binary_expression "uVar20 < 0x11" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (if_statement "if (image_info->compression != RLECompression) goto LAB_001d0f54;" if (parenthesized_expression "(image_info->compression != RLECompression)" ( (binary_expression "image_info->compression != RLECompression" (field_expression "image_info->compression" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_001d0f54;" goto statement_identifier ;)) (labeled_statement "LAB_001d36c0:\n          local_144 = 0x100;" statement_identifier : (expression_statement "local_144 = 0x100;" (assignment_expression "local_144 = 0x100" identifier = number_literal) ;)) (expression_statement "bmp_info.bits_per_pixel = 8;" (assignment_expression "bmp_info.bits_per_pixel = 8" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (expression_statement "local_17c = 8;" (assignment_expression "local_17c = 8" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) })))) (expression_statement "bmp_info.number_colors = local_144;" (assignment_expression "bmp_info.number_colors = local_144" (field_expression "bmp_info.number_colors" identifier . field_identifier) = identifier) ;) (if_statement "if ((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)) {\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }\n        else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }" if (parenthesized_expression "((image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144))" ( (binary_expression "(image->alpha_trait == UndefinedPixelTrait) && (uVar20 <= local_144)" (parenthesized_expression "(image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier) )) && (parenthesized_expression "(uVar20 <= local_144)" ( (binary_expression "uVar20 <= local_144" identifier <= identifier) ))) )) (compound_statement "{\n          bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));\n          bmp_info.offset_bits = bmp_info.file_size;\n          uVar18 = bmp_info.file_size;\n          if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }\n        }" { (expression_statement "bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f));" (assignment_expression "bmp_info.file_size = uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f))" (field_expression "bmp_info.file_size" identifier . field_identifier) = (binary_expression "uVar18 + (3 << ((byte)bmp_info.bits_per_pixel & 0x1f))" identifier + (parenthesized_expression "(3 << ((byte)bmp_info.bits_per_pixel & 0x1f))" ( (binary_expression "3 << ((byte)bmp_info.bits_per_pixel & 0x1f)" number_literal << (parenthesized_expression "((byte)bmp_info.bits_per_pixel & 0x1f)" ( (binary_expression "(byte)bmp_info.bits_per_pixel & 0x1f" (cast_expression "(byte)bmp_info.bits_per_pixel" ( (type_descriptor "byte" type_identifier) ) (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier)) & number_literal) ))) )))) ;) (expression_statement "bmp_info.offset_bits = bmp_info.file_size;" (assignment_expression "bmp_info.offset_bits = bmp_info.file_size" (field_expression "bmp_info.offset_bits" identifier . field_identifier) = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) (expression_statement "uVar18 = bmp_info.file_size;" (assignment_expression "uVar18 = bmp_info.file_size" identifier = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) (if_statement "if (bVar12 != 2) {\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }" if (parenthesized_expression "(bVar12 != 2)" ( (binary_expression "bVar12 != 2" identifier != number_literal) )) (compound_statement "{\n            bmp_info.file_size = bmp_info.file_size + local_144;\n            bmp_info.offset_bits = bmp_info.file_size;\n            uVar18 = bmp_info.file_size;\n          }" { (expression_statement "bmp_info.file_size = bmp_info.file_size + local_144;" (assignment_expression "bmp_info.file_size = bmp_info.file_size + local_144" (field_expression "bmp_info.file_size" identifier . field_identifier) = (binary_expression "bmp_info.file_size + local_144" (field_expression "bmp_info.file_size" identifier . field_identifier) + identifier)) ;) (expression_statement "bmp_info.offset_bits = bmp_info.file_size;" (assignment_expression "bmp_info.offset_bits = bmp_info.file_size" (field_expression "bmp_info.offset_bits" identifier . field_identifier) = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) (expression_statement "uVar18 = bmp_info.file_size;" (assignment_expression "uVar18 = bmp_info.file_size" identifier = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) })) }) (else_clause "else {\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }" else (compound_statement "{\n          SetImageStorageClass(image,DirectClass,exception);\n          if (image->storage_class == DirectClass) goto LAB_001d3250;\n        }" { (expression_statement "SetImageStorageClass(image,DirectClass,exception);" (call_expression "SetImageStorageClass(image,DirectClass,exception)" identifier (argument_list "(image,DirectClass,exception)" ( identifier , identifier , identifier ))) ;) (if_statement "if (image->storage_class == DirectClass) goto LAB_001d3250;" if (parenthesized_expression "(image->storage_class == DirectClass)" ( (binary_expression "image->storage_class == DirectClass" (field_expression "image->storage_class" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_001d3250;" goto statement_identifier ;)) }))) (expression_statement "uVar20 = (uint)CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar20 = (uint)CONCAT11(uStack_17b,local_17c)" identifier = (cast_expression "(uint)CONCAT11(uStack_17b,local_17c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))))) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }" else (compound_statement "{\nLAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        bmp_info.number_colors = 0;\n        pcVar16 = GetImageOption(image_info,"bmp:subtype");\n        if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }\n      }" { (labeled_statement "LAB_001d0f25:\n        if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }" statement_identifier : (if_statement "if (CVar19 != DirectClass) {\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }" if (parenthesized_expression "(CVar19 != DirectClass)" ( (binary_expression "CVar19 != DirectClass" identifier != identifier) )) (compound_statement "{\n          uVar20 = image->colors;\n          goto LAB_001d0f31;\n        }" { (expression_statement "uVar20 = image->colors;" (assignment_expression "uVar20 = image->colors" identifier = (field_expression "image->colors" identifier -> field_identifier)) ;) (goto_statement "goto LAB_001d0f31;" goto statement_identifier ;) }))) (labeled_statement "LAB_001d3250:\n        bmp_info.number_colors = 0;" statement_identifier : (expression_statement "bmp_info.number_colors = 0;" (assignment_expression "bmp_info.number_colors = 0" (field_expression "bmp_info.number_colors" identifier . field_identifier) = number_literal) ;)) (expression_statement "pcVar16 = GetImageOption(image_info,"bmp:subtype");" (assignment_expression "pcVar16 = GetImageOption(image_info,"bmp:subtype")" identifier = (call_expression "GetImageOption(image_info,"bmp:subtype")" identifier (argument_list "(image_info,"bmp:subtype")" ( identifier , (string_literal ""bmp:subtype"" " string_content ") )))) ;) (if_statement "if (pcVar16 == (char *)0x0) {\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }\n        else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }\n        }" { (if_statement "if (bVar12 == 4) {\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }\n          else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }" if (parenthesized_expression "(bVar12 == 4)" ( (binary_expression "bVar12 == 4" identifier == number_literal) )) (compound_statement "{\n            if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;\nLAB_001d3d56:\n            bmp_info.compression = 3;\n            bmp_info.bits_per_pixel = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar20 = 0x20;\n            iVar15 = 0;\n            uVar18 = bmp_info.file_size;\n          }" { (if_statement "if (image->alpha_trait == UndefinedPixelTrait) goto LAB_001d3e67;" if (parenthesized_expression "(image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_001d3e67;" goto statement_identifier ;)) (labeled_statement "LAB_001d3d56:\n            bmp_info.compression = 3;" statement_identifier : (expression_statement "bmp_info.compression = 3;" (assignment_expression "bmp_info.compression = 3" (field_expression "bmp_info.compression" identifier . field_identifier) = number_literal) ;)) (expression_statement "bmp_info.bits_per_pixel = 0x20;" (assignment_expression "bmp_info.bits_per_pixel = 0x20" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0x20;" (assignment_expression "uVar20 = 0x20" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = bmp_info.file_size;" (assignment_expression "uVar18 = bmp_info.file_size" identifier = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) }) (else_clause "else {\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }" else (compound_statement "{\nLAB_001d3da8:\n            uVar18 = bmp_info.file_size;\n            bmp_info.compression = 0;\n            bmp_info.bits_per_pixel = 0x18;\n            if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }\n          }" { (labeled_statement "LAB_001d3da8:\n            uVar18 = bmp_info.file_size;" statement_identifier : (expression_statement "uVar18 = bmp_info.file_size;" (assignment_expression "uVar18 = bmp_info.file_size" identifier = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;)) (expression_statement "bmp_info.compression = 0;" (assignment_expression "bmp_info.compression = 0" (field_expression "bmp_info.compression" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.bits_per_pixel = 0x18;" (assignment_expression "bmp_info.bits_per_pixel = 0x18" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (if_statement "if ((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)) {\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }" if (parenthesized_expression "((bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait))" ( (binary_expression "(bVar12 == 3) && (image->alpha_trait != UndefinedPixelTrait)" (parenthesized_expression "(bVar12 == 3)" ( (binary_expression "bVar12 == 3" identifier == number_literal) )) && (parenthesized_expression "(image->alpha_trait != UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait != UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\n              pcVar16 = GetImageOption(image_info,"bmp3:alpha");\n              MVar14 = IsStringTrue(pcVar16);\n              if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }\n            }" { (expression_statement "pcVar16 = GetImageOption(image_info,"bmp3:alpha");" (assignment_expression "pcVar16 = GetImageOption(image_info,"bmp3:alpha")" identifier = (call_expression "GetImageOption(image_info,"bmp3:alpha")" identifier (argument_list "(image_info,"bmp3:alpha")" ( identifier , (string_literal ""bmp3:alpha"" " string_content ") )))) ;) (expression_statement "MVar14 = IsStringTrue(pcVar16);" (assignment_expression "MVar14 = IsStringTrue(pcVar16)" identifier = (call_expression "IsStringTrue(pcVar16)" identifier (argument_list "(pcVar16)" ( identifier )))) ;) (if_statement "if (MVar14 == MagickFalse) {\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (compound_statement "{\n                uVar20 = 0x18;\n                iVar15 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }" { (expression_statement "uVar20 = 0x18;" (assignment_expression "uVar20 = 0x18" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }" else (compound_statement "{\n                local_144 = 0;\n                uVar20 = 0x20;\n                bmp_info.bits_per_pixel = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar15 = 0;\n              }" { (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0x20;" (assignment_expression "uVar20 = 0x20" identifier = number_literal) ;) (expression_statement "bmp_info.bits_per_pixel = 0x20;" (assignment_expression "bmp_info.bits_per_pixel = 0x20" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }" else (compound_statement "{\nLAB_001d3e67:\n              bmp_info.compression = 0;\n              bmp_info.bits_per_pixel = 0x18;\n              local_144 = 0;\n              uVar20 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar15 = 0;\n              uVar18 = bmp_info.file_size;\n            }" { (labeled_statement "LAB_001d3e67:\n              bmp_info.compression = 0;" statement_identifier : (expression_statement "bmp_info.compression = 0;" (assignment_expression "bmp_info.compression = 0" (field_expression "bmp_info.compression" identifier . field_identifier) = number_literal) ;)) (expression_statement "bmp_info.bits_per_pixel = 0x18;" (assignment_expression "bmp_info.bits_per_pixel = 0x18" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0x18;" (assignment_expression "uVar20 = 0x18" identifier = number_literal) ;) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = bmp_info.file_size;" (assignment_expression "uVar18 = bmp_info.file_size" identifier = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) }))) }))) }) (else_clause "else {\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }" else (compound_statement "{\n          if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }\n          bmp_info.compression = 3;\n          bmp_info.bits_per_pixel = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar20 = 0x10;\n          uVar18 = bmp_info.file_size;\n        }" { (if_statement "if (image->alpha_trait == UndefinedPixelTrait) {\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }\n          else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }" if (parenthesized_expression "(image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            iVar15 = LocaleNCompare(pcVar16,"RGB555",6);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }\n          }" { (expression_statement "iVar15 = LocaleNCompare(pcVar16,"RGB555",6);" (assignment_expression "iVar15 = LocaleNCompare(pcVar16,"RGB555",6)" identifier = (call_expression "LocaleNCompare(pcVar16,"RGB555",6)" identifier (argument_list "(pcVar16,"RGB555",6)" ( identifier , (string_literal ""RGB555"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar15 == 0) {\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 1;\n            }" { (expression_statement "bmp_info.red_mask = 0x7c00;" (assignment_expression "bmp_info.red_mask = 0x7c00" (field_expression "bmp_info.red_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.green_mask = 0x3e0;" (assignment_expression "bmp_info.green_mask = 0x3e0" (field_expression "bmp_info.green_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.blue_mask = 0x1f;" (assignment_expression "bmp_info.blue_mask = 0x1f" (field_expression "bmp_info.blue_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.alpha_mask = 0;" (assignment_expression "bmp_info.alpha_mask = 0" (field_expression "bmp_info.alpha_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" identifier = number_literal) ;) }) (else_clause "else {\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }" else (compound_statement "{\n              iVar15 = LocaleNCompare(pcVar16,"RGB565",6);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0xf800;\n              bmp_info.green_mask = 0x7e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0;\n              iVar15 = 2;\n            }" { (expression_statement "iVar15 = LocaleNCompare(pcVar16,"RGB565",6);" (assignment_expression "iVar15 = LocaleNCompare(pcVar16,"RGB565",6)" identifier = (call_expression "LocaleNCompare(pcVar16,"RGB565",6)" identifier (argument_list "(pcVar16,"RGB565",6)" ( identifier , (string_literal ""RGB565"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n                if (bVar12 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" { (if_statement "if (bVar12 == 4) goto LAB_001d3e67;" if (parenthesized_expression "(bVar12 == 4)" ( (binary_expression "bVar12 == 4" identifier == number_literal) )) (goto_statement "goto LAB_001d3e67;" goto statement_identifier ;)) (goto_statement "goto LAB_001d3da8;" goto statement_identifier ;) })) (expression_statement "bmp_info.red_mask = 0xf800;" (assignment_expression "bmp_info.red_mask = 0xf800" (field_expression "bmp_info.red_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.green_mask = 0x7e0;" (assignment_expression "bmp_info.green_mask = 0x7e0" (field_expression "bmp_info.green_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.blue_mask = 0x1f;" (assignment_expression "bmp_info.blue_mask = 0x1f" (field_expression "bmp_info.blue_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.alpha_mask = 0;" (assignment_expression "bmp_info.alpha_mask = 0" (field_expression "bmp_info.alpha_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar15 = 2;" (assignment_expression "iVar15 = 2" identifier = number_literal) ;) }))) }) (else_clause "else {\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }" else (compound_statement "{\n            iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);\n            if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }\n          }" { (expression_statement "iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8);" (assignment_expression "iVar15 = LocaleNCompare(pcVar16,"ARGB4444",8)" identifier = (call_expression "LocaleNCompare(pcVar16,"ARGB4444",8)" identifier (argument_list "(pcVar16,"ARGB4444",8)" ( identifier , (string_literal ""ARGB4444"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar15 == 0) {\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }\n            else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n              bmp_info.red_mask = 0xf00;\n              bmp_info.green_mask = 0xf0;\n              bmp_info.blue_mask = 0xf;\n              bmp_info.alpha_mask = 0xf000;\n              iVar15 = 3;\n            }" { (expression_statement "bmp_info.red_mask = 0xf00;" (assignment_expression "bmp_info.red_mask = 0xf00" (field_expression "bmp_info.red_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.green_mask = 0xf0;" (assignment_expression "bmp_info.green_mask = 0xf0" (field_expression "bmp_info.green_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.blue_mask = 0xf;" (assignment_expression "bmp_info.blue_mask = 0xf" (field_expression "bmp_info.blue_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.alpha_mask = 0xf000;" (assignment_expression "bmp_info.alpha_mask = 0xf000" (field_expression "bmp_info.alpha_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar15 = 3;" (assignment_expression "iVar15 = 3" identifier = number_literal) ;) }) (else_clause "else {\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }" else (compound_statement "{\n              iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);\n              if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              bmp_info.red_mask = 0x7c00;\n              bmp_info.green_mask = 0x3e0;\n              bmp_info.blue_mask = 0x1f;\n              bmp_info.alpha_mask = 0x8000;\n              iVar15 = 4;\n            }" { (expression_statement "iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8);" (assignment_expression "iVar15 = LocaleNCompare(pcVar16,"ARGB1555",8)" identifier = (call_expression "LocaleNCompare(pcVar16,"ARGB1555",8)" identifier (argument_list "(pcVar16,"ARGB1555",8)" ( identifier , (string_literal ""ARGB1555"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar15 != 0) {\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n                if (bVar12 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" { (if_statement "if (bVar12 == 4) goto LAB_001d3d56;" if (parenthesized_expression "(bVar12 == 4)" ( (binary_expression "bVar12 == 4" identifier == number_literal) )) (goto_statement "goto LAB_001d3d56;" goto statement_identifier ;)) (goto_statement "goto LAB_001d3da8;" goto statement_identifier ;) })) (expression_statement "bmp_info.red_mask = 0x7c00;" (assignment_expression "bmp_info.red_mask = 0x7c00" (field_expression "bmp_info.red_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.green_mask = 0x3e0;" (assignment_expression "bmp_info.green_mask = 0x3e0" (field_expression "bmp_info.green_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.blue_mask = 0x1f;" (assignment_expression "bmp_info.blue_mask = 0x1f" (field_expression "bmp_info.blue_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.alpha_mask = 0x8000;" (assignment_expression "bmp_info.alpha_mask = 0x8000" (field_expression "bmp_info.alpha_mask" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar15 = 4;" (assignment_expression "iVar15 = 4" identifier = number_literal) ;) }))) }))) (expression_statement "bmp_info.compression = 3;" (assignment_expression "bmp_info.compression = 3" (field_expression "bmp_info.compression" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.bits_per_pixel = 0x10;" (assignment_expression "bmp_info.bits_per_pixel = 0x10" (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier) = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x10;" (assignment_expression "local_17c = 0x10" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0x10;" (assignment_expression "uVar20 = 0x10" identifier = number_literal) ;) (expression_statement "uVar18 = bmp_info.file_size;" (assignment_expression "uVar18 = bmp_info.file_size" identifier = (field_expression "bmp_info.file_size" identifier . field_identifier)) ;) }))) }))) (expression_statement "bmp_info.ba_offset = 0;" (assignment_expression "bmp_info.ba_offset = 0" (field_expression "bmp_info.ba_offset" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar20 = uVar20 * image->columns + 0x1f >> 5;" (assignment_expression "uVar20 = uVar20 * image->columns + 0x1f >> 5" identifier = (binary_expression "uVar20 * image->columns + 0x1f >> 5" (binary_expression "uVar20 * image->columns + 0x1f" (binary_expression "uVar20 * image->columns" identifier * (field_expression "image->columns" identifier -> field_identifier)) + number_literal) >> number_literal)) ;) (expression_statement "uVar21 = uVar20 * 4;" (assignment_expression "uVar21 = uVar20 * 4" identifier = (binary_expression "uVar20 * 4" identifier * number_literal)) ;) (expression_statement "string_info = GetImageProfile(image,"icc");" (assignment_expression "string_info = GetImageProfile(image,"icc")" identifier = (call_expression "GetImageProfile(image,"icc")" identifier (argument_list "(image,"icc")" ( identifier , (string_literal ""icc"" " string_content ") )))) ;) (expression_statement "bVar43 = string_info != (StringInfo *)0x0;" (assignment_expression "bVar43 = string_info != (StringInfo *)0x0" identifier = (binary_expression "string_info != (StringInfo *)0x0" identifier != (cast_expression "(StringInfo *)0x0" ( (type_descriptor "StringInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;) (expression_statement "bVar44 = image->rendering_intent == UndefinedIntent;" (assignment_expression "bVar44 = image->rendering_intent == UndefinedIntent" identifier = (binary_expression "image->rendering_intent == UndefinedIntent" (field_expression "image->rendering_intent" identifier -> field_identifier) == identifier)) ;) (if_statement "if (bVar44 && !bVar43) {\n        bVar7 = image->gamma != 0.0;\n      }" if (parenthesized_expression "(bVar44 && !bVar43)" ( (binary_expression "bVar44 && !bVar43" identifier && (unary_expression "!bVar43" ! identifier)) )) (compound_statement "{\n        bVar7 = image->gamma != 0.0;\n      }" { (expression_statement "bVar7 = image->gamma != 0.0;" (assignment_expression "bVar7 = image->gamma != 0.0" identifier = (binary_expression "image->gamma != 0.0" (field_expression "image->gamma" identifier -> field_identifier) != number_literal)) ;) })) (if_statement "if (bVar12 == 2) {\n        bmp_info.size = 0xc;\n      }\n      else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }" if (parenthesized_expression "(bVar12 == 2)" ( (binary_expression "bVar12 == 2" identifier == number_literal) )) (compound_statement "{\n        bmp_info.size = 0xc;\n      }" { (expression_statement "bmp_info.size = 0xc;" (assignment_expression "bmp_info.size = 0xc" (field_expression "bmp_info.size" identifier . field_identifier) = number_literal) ;) }) (else_clause "else if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }" else (if_statement "if ((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)) {\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }\n      else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }" if (parenthesized_expression "((bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait))" ( (binary_expression "(bVar12 == 3) || (!bVar7 && image->alpha_trait == UndefinedPixelTrait)" (parenthesized_expression "(bVar12 == 3)" ( (binary_expression "bVar12 == 3" identifier == number_literal) )) || (parenthesized_expression "(!bVar7 && image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "!bVar7 && image->alpha_trait == UndefinedPixelTrait" (unary_expression "!bVar7" ! identifier) && (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier)) ))) )) (compound_statement "{\n        bmp_info.size = 0x28;\n        bVar12 = 3;\n      }" { (expression_statement "bmp_info.size = 0x28;" (assignment_expression "bmp_info.size = 0x28" (field_expression "bmp_info.size" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar12 = 3;" (assignment_expression "bVar12 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }" else (compound_statement "{\n        if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }\n        uVar18 = uVar18 + iVar22;\n        bVar12 = 4;\n        bmp_info.offset_bits = bmp_info.offset_bits + iVar22;\n      }" { (if_statement "if (bVar44 && !bVar43) {\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }\n        else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }" if (parenthesized_expression "(bVar44 && !bVar43)" ( (binary_expression "bVar44 && !bVar43" identifier && (unary_expression "!bVar43" ! identifier)) )) (compound_statement "{\n          bmp_info.size = 0x6c;\n          iVar22 = 0x44;\n        }" { (expression_statement "bmp_info.size = 0x6c;" (assignment_expression "bmp_info.size = 0x6c" (field_expression "bmp_info.size" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar22 = 0x44;" (assignment_expression "iVar22 = 0x44" identifier = number_literal) ;) }) (else_clause "else {\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }" else (compound_statement "{\n          bmp_info.size = 0x7c;\n          iVar22 = 0x54;\n        }" { (expression_statement "bmp_info.size = 0x7c;" (assignment_expression "bmp_info.size = 0x7c" (field_expression "bmp_info.size" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar22 = 0x54;" (assignment_expression "iVar22 = 0x54" identifier = number_literal) ;) }))) (expression_statement "uVar18 = uVar18 + iVar22;" (assignment_expression "uVar18 = uVar18 + iVar22" identifier = (binary_expression "uVar18 + iVar22" identifier + identifier)) ;) (expression_statement "bVar12 = 4;" (assignment_expression "bVar12 = 4" identifier = number_literal) ;) (expression_statement "bmp_info.offset_bits = bmp_info.offset_bits + iVar22;" (assignment_expression "bmp_info.offset_bits = bmp_info.offset_bits + iVar22" (field_expression "bmp_info.offset_bits" identifier . field_identifier) = (binary_expression "bmp_info.offset_bits + iVar22" (field_expression "bmp_info.offset_bits" identifier . field_identifier) + identifier)) ;) }))))) (expression_statement "sVar28 = image->columns;" (assignment_expression "sVar28 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "bmp_info.planes = 1;" (assignment_expression "bmp_info.planes = 1" (field_expression "bmp_info.planes" identifier . field_identifier) = number_literal) ;) (expression_statement "bmp_info.x_pixels = 0xb6d;" (assignment_expression "bmp_info.x_pixels = 0xb6d" (field_expression "bmp_info.x_pixels" identifier . field_identifier) = number_literal) ;) (expression_statement "sVar35 = image->rows;" (assignment_expression "sVar35 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (expression_statement "bmp_info.y_pixels = 0xb6d;" (assignment_expression "bmp_info.y_pixels = 0xb6d" (field_expression "bmp_info.y_pixels" identifier . field_identifier) = number_literal) ;) (expression_statement "__n = uVar21 * sVar35;" (assignment_expression "__n = uVar21 * sVar35" identifier = (binary_expression "uVar21 * sVar35" identifier * identifier)) ;) (expression_statement "local_128 = (char *)(uVar18 + __n);" (assignment_expression "local_128 = (char *)(uVar18 + __n)" identifier = (cast_expression "(char *)(uVar18 + __n)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar18 + __n)" ( (binary_expression "uVar18 + __n" identifier + identifier) )))) ;) (if_statement "if (image->units < PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }\n      else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }" if (parenthesized_expression "(image->units < PixelsPerCentimeterResolution)" ( (binary_expression "image->units < PixelsPerCentimeterResolution" (field_expression "image->units" identifier -> field_identifier) < identifier) )) (compound_statement "{\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;\n        bmp_info.y_pixels = local_e4;\n      }" { (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)\n        ;" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)" identifier = (cast_expression "(uint)(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                         ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)" identifier (argument_list "(((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50)" ( (binary_expression "((float)(image->resolution).x * DAT_0029f71c) / (float)_DAT_002b7d50" (parenthesized_expression "((float)(image->resolution).x * DAT_0029f71c)" ( (binary_expression "(float)(image->resolution).x * DAT_0029f71c" (cast_expression "(float)(image->resolution).x" ( (type_descriptor "float" primitive_type) ) (field_expression "(image->resolution).x" (parenthesized_expression "(image->resolution)" ( (field_expression "image->resolution" identifier -> field_identifier) )) . field_identifier)) * identifier) )) / (cast_expression "(float)_DAT_002b7d50" ( (type_descriptor "float" primitive_type) ) identifier)) )))))) ;) (expression_statement "bmp_info.x_pixels = local_e4;" (assignment_expression "bmp_info.x_pixels = local_e4" (field_expression "bmp_info.x_pixels" identifier . field_identifier) = identifier) ;) (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)\n        ;" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)" identifier = (cast_expression "(uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                         ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)" identifier (argument_list "((DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50)" ( (binary_expression "(DAT_0029f71c * (float)(image->resolution).y) / (float)_DAT_002b7d50" (parenthesized_expression "(DAT_0029f71c * (float)(image->resolution).y)" ( (binary_expression "DAT_0029f71c * (float)(image->resolution).y" identifier * (cast_expression "(float)(image->resolution).y" ( (type_descriptor "float" primitive_type) ) (field_expression "(image->resolution).y" (parenthesized_expression "(image->resolution)" ( (field_expression "image->resolution" identifier -> field_identifier) )) . field_identifier))) )) / (cast_expression "(float)_DAT_002b7d50" ( (type_descriptor "float" primitive_type) ) identifier)) )))))) ;) (expression_statement "bmp_info.y_pixels = local_e4;" (assignment_expression "bmp_info.y_pixels = local_e4" (field_expression "bmp_info.y_pixels" identifier . field_identifier) = identifier) ;) }) (else_clause "else if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }" else (if_statement "if (image->units == PixelsPerCentimeterResolution) {\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }" if (parenthesized_expression "(image->units == PixelsPerCentimeterResolution)" ( (binary_expression "image->units == PixelsPerCentimeterResolution" (field_expression "image->units" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);\n        bmp_info.x_pixels = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);\n        bmp_info.y_pixels = local_e4;\n      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c)" identifier = (cast_expression "(uint)(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)(image->resolution).x * DAT_0029f71c)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)(image->resolution).x * DAT_0029f71c)" identifier (argument_list "((float)(image->resolution).x * DAT_0029f71c)" ( (binary_expression "(float)(image->resolution).x * DAT_0029f71c" (cast_expression "(float)(image->resolution).x" ( (type_descriptor "float" primitive_type) ) (field_expression "(image->resolution).x" (parenthesized_expression "(image->resolution)" ( (field_expression "image->resolution" identifier -> field_identifier) )) . field_identifier)) * identifier) )))))) ;) (expression_statement "bmp_info.x_pixels = local_e4;" (assignment_expression "bmp_info.x_pixels = local_e4" (field_expression "bmp_info.x_pixels" identifier . field_identifier) = identifier) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y)" identifier = (cast_expression "(uint)(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(DAT_0029f71c * (float)(image->resolution).y)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(DAT_0029f71c * (float)(image->resolution).y)" identifier (argument_list "(DAT_0029f71c * (float)(image->resolution).y)" ( (binary_expression "DAT_0029f71c * (float)(image->resolution).y" identifier * (cast_expression "(float)(image->resolution).y" ( (type_descriptor "float" primitive_type) ) (field_expression "(image->resolution).y" (parenthesized_expression "(image->resolution)" ( (field_expression "image->resolution" identifier -> field_identifier) )) . field_identifier))) )))))) ;) (expression_statement "bmp_info.y_pixels = local_e4;" (assignment_expression "bmp_info.y_pixels = local_e4" (field_expression "bmp_info.y_pixels" identifier . field_identifier) = identifier) ;) })))) (expression_statement "uVar40 = sVar28 + 0x100;" (assignment_expression "uVar40 = sVar28 + 0x100" identifier = (binary_expression "sVar28 + 0x100" identifier + number_literal)) ;) (if_statement "if (sVar28 + 0x100 < uVar21) {\n        uVar40 = uVar21;\n      }" if (parenthesized_expression "(sVar28 + 0x100 < uVar21)" ( (binary_expression "sVar28 + 0x100 < uVar21" (binary_expression "sVar28 + 0x100" identifier + number_literal) < identifier) )) (compound_statement "{\n        uVar40 = uVar21;\n      }" { (expression_statement "uVar40 = uVar21;" (assignment_expression "uVar40 = uVar21" identifier = identifier) ;) })) (expression_statement "bmp_info.file_size = (uint)local_128;" (assignment_expression "bmp_info.file_size = (uint)local_128" (field_expression "bmp_info.file_size" identifier . field_identifier) = (cast_expression "(uint)local_128" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bmp_info.width = sVar28;" (assignment_expression "bmp_info.width = sVar28" (field_expression "bmp_info.width" identifier . field_identifier) = identifier) ;) (expression_statement "bmp_info.height = sVar35;" (assignment_expression "bmp_info.height = sVar35" (field_expression "bmp_info.height" identifier . field_identifier) = identifier) ;) (expression_statement "bmp_info.image_size = __n;" (assignment_expression "bmp_info.image_size = __n" (field_expression "bmp_info.image_size" identifier . field_identifier) = identifier) ;) (expression_statement "bmp_info.colors_important = local_144;" (assignment_expression "bmp_info.colors_important = local_144" (field_expression "bmp_info.colors_important" identifier . field_identifier) = identifier) ;) (expression_statement "local_124 = AcquireVirtualMemory(sVar35,uVar40);" (assignment_expression "local_124 = AcquireVirtualMemory(sVar35,uVar40)" identifier = (call_expression "AcquireVirtualMemory(sVar35,uVar40)" identifier (argument_list "(sVar35,uVar40)" ( identifier , identifier )))) ;) (expression_statement "pIVar24 = image;" (assignment_expression "pIVar24 = image" identifier = identifier) ;) (if_statement "if (local_124 == (MemoryInfo *)0x0) {\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }" if (parenthesized_expression "(local_124 == (MemoryInfo *)0x0)" ( (binary_expression "local_124 == (MemoryInfo *)0x0" identifier == (cast_expression "(MemoryInfo *)0x0" ( (type_descriptor "MemoryInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      }" { (expression_statement "ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);" (call_expression "ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename)" identifier (argument_list "(exception,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , identifier , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (field_expression "image->filename" identifier -> field_identifier) ))) ;) (expression_statement "p_Var6 = (_Image *)image_info->adjoin;" (assignment_expression "p_Var6 = (_Image *)image_info->adjoin" identifier = (cast_expression "(_Image *)image_info->adjoin" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "image_info->adjoin" identifier -> field_identifier))) ;) (while_statement "while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }" while (parenthesized_expression "(pIVar9 = image, p_Var6 != (_Image *)0x0)" ( (comma_expression "pIVar9 = image, p_Var6 != (_Image *)0x0" (assignment_expression "pIVar9 = image" identifier = identifier) , (binary_expression "p_Var6 != (_Image *)0x0" identifier != (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }" { (expression_statement "p_Var6 = pIVar9->previous;" (assignment_expression "p_Var6 = pIVar9->previous" identifier = (field_expression "pIVar9->previous" identifier -> field_identifier)) ;) (expression_statement "image = p_Var6;" (assignment_expression "image = p_Var6" identifier = identifier) ;) (expression_statement "pIVar24 = pIVar9;" (assignment_expression "pIVar24 = pIVar9" identifier = identifier) ;) })) (goto_statement "goto LAB_001d3a2a;" goto statement_identifier ;) })) (expression_statement "local_168 = (char *)GetVirtualMemoryBlob(local_124);" (assignment_expression "local_168 = (char *)GetVirtualMemoryBlob(local_124)" identifier = (cast_expression "(char *)GetVirtualMemoryBlob(local_124)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetVirtualMemoryBlob(local_124)" identifier (argument_list "(local_124)" ( identifier ))))) ;) (expression_statement "memset(local_168,0,__n);" (call_expression "memset(local_168,0,__n)" identifier (argument_list "(local_168,0,__n)" ( identifier , number_literal , identifier ))) ;) (expression_statement "value = CONCAT11(uStack_17b,local_17c);" (assignment_expression "value = CONCAT11(uStack_17b,local_17c)" identifier = (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier )))) ;) (switch_statement "switch(value) {\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }" switch (parenthesized_expression "(value)" ( identifier )) (compound_statement "{\n      default:\n        goto _L71;\n      case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }\n      }" { (case_statement "default:\n        goto _L71;" default : (goto_statement "goto _L71;" goto statement_identifier ;)) (case_statement "case 1:\n        if ((int)image->rows < 1) break;\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);\n        bVar44 = bVar12 != 2;\n        goto LAB_001d149a;" case number_literal : (if_statement "if ((int)image->rows < 1) break;" if (parenthesized_expression "((int)image->rows < 1)" ( (binary_expression "(int)image->rows < 1" (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier)) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "local_148 = 0;" (assignment_expression "local_148 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        } while ((int)uVar18 < (int)uVar20);" do (compound_statement "{\n          pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n          if (pQVar23 == (Quantum *)0x0) break;\n          sVar47 = image->columns;\n          local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n          local_17c = (byte)sVar47;\n          uStack_17b = (undefined1)(sVar47 >> 8);\n          uStack_17a = (undefined2)(sVar47 >> 0x10);\n          pcVar16 = local_164;\n          if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }\n          iVar15 = sVar47 + 0xe;\n          if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }\n          if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }\n          uVar20 = image->rows;\n          if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }\n          uVar18 = uVar18 + 1;\n          bVar44 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          local_148 = local_148 + (uint)bVar44;\n        }" { (expression_statement "pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);" (assignment_expression "pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception)" identifier = (call_expression "GetVirtualPixels(image,0,uVar18,image->columns,1,exception)" identifier (argument_list "(image,0,uVar18,image->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (pQVar23 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar23 == (Quantum *)0x0)" ( (binary_expression "pQVar23 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "local_164 = local_168 + (~uVar18 + image->rows) * uVar21;" (assignment_expression "local_164 = local_168 + (~uVar18 + image->rows) * uVar21" identifier = (binary_expression "local_168 + (~uVar18 + image->rows) * uVar21" identifier + (binary_expression "(~uVar18 + image->rows) * uVar21" (parenthesized_expression "(~uVar18 + image->rows)" ( (binary_expression "~uVar18 + image->rows" (unary_expression "~uVar18" ~ identifier) + (field_expression "image->rows" identifier -> field_identifier)) )) * identifier))) ;) (expression_statement "local_17c = (byte)sVar47;" (assignment_expression "local_17c = (byte)sVar47" identifier = (cast_expression "(byte)sVar47" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(sVar47 >> 8);" (assignment_expression "uStack_17b = (undefined1)(sVar47 >> 8)" identifier = (call_expression "(undefined1)(sVar47 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(sVar47 >> 8)" ( (binary_expression "sVar47 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(sVar47 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(sVar47 >> 0x10)" identifier = (call_expression "(undefined2)(sVar47 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(sVar47 >> 0x10)" ( (binary_expression "sVar47 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "pcVar16 = local_164;" (assignment_expression "pcVar16 = local_164" identifier = identifier) ;) (if_statement "if (0 < (int)sVar47) {\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }" if (parenthesized_expression "(0 < (int)sVar47)" ( (binary_expression "0 < (int)sVar47" number_literal < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar20 = 0;\n            iVar15 = 0;\n            iVar22 = 0;\n            do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);\n            pcVar16 = local_164;\n            if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }\n          }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < (int)sVar47);" do (compound_statement "{\n              uVar20 = uVar20 * 2;\n              if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }\n              iVar15 = iVar15 + 1;\n              if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              pQVar23 = pQVar23 + image->number_channels;\n              sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            }" { (expression_statement "uVar20 = uVar20 * 2;" (assignment_expression "uVar20 = uVar20 * 2" identifier = (binary_expression "uVar20 * 2" identifier * number_literal)) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);\n                if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }\n                uVar20 = uVar20 | uVar40;\n              }" { (expression_statement "uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset]);" (assignment_expression "uVar40 = (uint)NAN(pQVar23[image->channel_map[5].offset])" identifier = (cast_expression "(uint)NAN(pQVar23[image->channel_map[5].offset])" ( (type_descriptor "uint" type_identifier) ) (call_expression "NAN(pQVar23[image->channel_map[5].offset])" identifier (argument_list "(pQVar23[image->channel_map[5].offset])" ( (subscript_expression "pQVar23[image->channel_map[5].offset]" identifier [ (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) ))))) ;) (if_statement "if (pQVar23[image->channel_map[5].offset] != 0.0) {\n                  uVar40 = 1;\n                }" if (parenthesized_expression "(pQVar23[image->channel_map[5].offset] != 0.0)" ( (binary_expression "pQVar23[image->channel_map[5].offset] != 0.0" (subscript_expression "pQVar23[image->channel_map[5].offset]" identifier [ (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) != number_literal) )) (compound_statement "{\n                  uVar40 = 1;\n                }" { (expression_statement "uVar40 = 1;" (assignment_expression "uVar40 = 1" identifier = number_literal) ;) })) (expression_statement "uVar20 = uVar20 | uVar40;" (assignment_expression "uVar20 = uVar20 | uVar40" identifier = (binary_expression "uVar20 | uVar40" identifier | identifier)) ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (iVar15 == 8) {\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }" if (parenthesized_expression "(iVar15 == 8)" ( (binary_expression "iVar15 == 8" identifier == number_literal) )) (compound_statement "{\n                iVar15 = 0;\n                *local_164 = (char)uVar20;\n                local_164 = local_164 + 1;\n                uVar20 = 0;\n                sVar47 = image->columns;\n                local_17c = (byte)sVar47;\n                uStack_17b = (undefined1)(sVar47 >> 8);\n                uStack_17a = (undefined2)(sVar47 >> 0x10);\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "*local_164 = (char)uVar20;" (assignment_expression "*local_164 = (char)uVar20" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)uVar20" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "local_17c = (byte)sVar47;" (assignment_expression "local_17c = (byte)sVar47" identifier = (cast_expression "(byte)sVar47" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(sVar47 >> 8);" (assignment_expression "uStack_17b = (undefined1)(sVar47 >> 8)" identifier = (call_expression "(undefined1)(sVar47 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(sVar47 >> 8)" ( (binary_expression "sVar47 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(sVar47 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(sVar47 >> 0x10)" identifier = (call_expression "(undefined2)(sVar47 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(sVar47 >> 0x10)" ( (binary_expression "sVar47 >> 0x10" identifier >> number_literal) )))) ;) })) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "pQVar23 = pQVar23 + image->number_channels;" (assignment_expression "pQVar23 = pQVar23 + image->number_channels" identifier = (binary_expression "pQVar23 + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) }) while (parenthesized_expression "(iVar22 < (int)sVar47)" ( (binary_expression "iVar22 < (int)sVar47" identifier < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "pcVar16 = local_164;" (assignment_expression "pcVar16 = local_164" identifier = identifier) ;) (if_statement "if (iVar15 != 0) {\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar16 = local_164 + 1;\n              *local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));\n              sVar47 = image->columns;\n            }" { (expression_statement "pcVar16 = local_164 + 1;" (assignment_expression "pcVar16 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f));" (assignment_expression "*local_164 = (char)(uVar20 << (8U - (char)iVar15 & 0x1f))" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)(uVar20 << (8U - (char)iVar15 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar20 << (8U - (char)iVar15 & 0x1f))" ( (binary_expression "uVar20 << (8U - (char)iVar15 & 0x1f)" identifier << (parenthesized_expression "(8U - (char)iVar15 & 0x1f)" ( (binary_expression "8U - (char)iVar15 & 0x1f" (binary_expression "8U - (char)iVar15" number_literal - (cast_expression "(char)iVar15" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) ))) )))) ;) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) })) })) (expression_statement "iVar15 = sVar47 + 0xe;" (assignment_expression "iVar15 = sVar47 + 0xe" identifier = (binary_expression "sVar47 + 0xe" identifier + number_literal)) ;) (if_statement "if (-1 < (int)(sVar47 + 7)) {\n            iVar15 = sVar47 + 7;\n          }" if (parenthesized_expression "(-1 < (int)(sVar47 + 7))" ( (binary_expression "-1 < (int)(sVar47 + 7)" number_literal < (cast_expression "(int)(sVar47 + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar47 + 7)" ( (binary_expression "sVar47 + 7" identifier + number_literal) )))) )) (compound_statement "{\n            iVar15 = sVar47 + 7;\n          }" { (expression_statement "iVar15 = sVar47 + 7;" (assignment_expression "iVar15 = sVar47 + 7" identifier = (binary_expression "sVar47 + 7" identifier + number_literal)) ;) })) (if_statement "if (iVar15 >> 3 < (int)uVar21) {\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }" if (parenthesized_expression "(iVar15 >> 3 < (int)uVar21)" ( (binary_expression "iVar15 >> 3 < (int)uVar21" (binary_expression "iVar15 >> 3" identifier >> number_literal) < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pcVar37 = pcVar16;\n            do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));\n          }" { (expression_statement "pcVar37 = pcVar16;" (assignment_expression "pcVar37 = pcVar16" identifier = identifier) ;) (do_statement "do {\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            } while (pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)));" do (compound_statement "{\n              pcVar34 = pcVar37 + 1;\n              *pcVar37 = '\0';\n              pcVar37 = pcVar34;\n            }" { (expression_statement "pcVar34 = pcVar37 + 1;" (assignment_expression "pcVar34 = pcVar37 + 1" identifier = (binary_expression "pcVar37 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar37 = '\0';" (assignment_expression "*pcVar37 = '\0'" (pointer_expression "*pcVar37" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar37 = pcVar34;" (assignment_expression "pcVar37 = pcVar34" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3)))" ( (binary_expression "pcVar34 != pcVar16 + (uVar21 - (iVar15 >> 3))" identifier != (binary_expression "pcVar16 + (uVar21 - (iVar15 >> 3))" identifier + (parenthesized_expression "(uVar21 - (iVar15 >> 3))" ( (binary_expression "uVar21 - (iVar15 >> 3)" identifier - (parenthesized_expression "(iVar15 >> 3)" ( (binary_expression "iVar15 >> 3" identifier >> number_literal) ))) )))) )) ;) })) (expression_statement "uVar20 = image->rows;" (assignment_expression "uVar20 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (if_statement "if (image->previous == (_Image *)0x0) {\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }" if (parenthesized_expression "(image->previous == (_Image *)0x0)" ( (binary_expression "image->previous == (_Image *)0x0" (field_expression "image->previous" identifier -> field_identifier) == (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);\n            if (MVar14 == MagickFalse) break;\n            uVar20 = image->rows;\n          }" { (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20)" identifier = (call_expression "SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20)" identifier (argument_list "(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                      (ulonglong)uVar20)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT44(local_148,local_14c)" identifier (argument_list "(local_148,local_14c)" ( identifier , identifier ))) , (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if (MVar14 == MagickFalse) break;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = image->rows;" (assignment_expression "uVar20 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "bVar44 = 0xfffffffe < local_14c;" (assignment_expression "bVar44 = 0xfffffffe < local_14c" identifier = (binary_expression "0xfffffffe < local_14c" number_literal < identifier)) ;) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "local_148 = local_148 + (uint)bVar44;" (assignment_expression "local_148 = local_148 + (uint)bVar44" identifier = (binary_expression "local_148 + (uint)bVar44" identifier + (cast_expression "(uint)bVar44" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar18 < (int)uVar20)" ( (binary_expression "(int)uVar18 < (int)uVar20" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "bVar44 = bVar12 != 2;" (assignment_expression "bVar44 = bVar12 != 2" identifier = (binary_expression "bVar12 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;)) (case_statement "case 4:\n        local_14c = 0;\n        local_148 = 0;\n        uVar18 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "local_148 = 0;" (assignment_expression "local_148 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < (int)image->rows)" ( (binary_expression "0 < (int)image->rows" number_literal < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) (compound_statement "{\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          } while ((int)uVar18 < (int)uVar20);" do (compound_statement "{\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            local_164 = local_168 + (~uVar18 + image->rows) * uVar21;\n            local_17c = (byte)sVar47;\n            uStack_17b = (undefined1)(sVar47 >> 8);\n            uStack_17a = (undefined2)(sVar47 >> 0x10);\n            pcVar16 = local_164;\n            if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }\n            iVar15 = (int)(sVar47 + 1) / 2;\n            if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            bVar44 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            local_148 = local_148 + (uint)bVar44;\n          }" { (expression_statement "pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);" (assignment_expression "pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception)" identifier = (call_expression "GetVirtualPixels(image,0,uVar18,image->columns,1,exception)" identifier (argument_list "(image,0,uVar18,image->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;" if (parenthesized_expression "(pQVar23 == (Quantum *)0x0)" ( (binary_expression "pQVar23 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "local_164 = local_168 + (~uVar18 + image->rows) * uVar21;" (assignment_expression "local_164 = local_168 + (~uVar18 + image->rows) * uVar21" identifier = (binary_expression "local_168 + (~uVar18 + image->rows) * uVar21" identifier + (binary_expression "(~uVar18 + image->rows) * uVar21" (parenthesized_expression "(~uVar18 + image->rows)" ( (binary_expression "~uVar18 + image->rows" (unary_expression "~uVar18" ~ identifier) + (field_expression "image->rows" identifier -> field_identifier)) )) * identifier))) ;) (expression_statement "local_17c = (byte)sVar47;" (assignment_expression "local_17c = (byte)sVar47" identifier = (cast_expression "(byte)sVar47" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(sVar47 >> 8);" (assignment_expression "uStack_17b = (undefined1)(sVar47 >> 8)" identifier = (call_expression "(undefined1)(sVar47 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(sVar47 >> 8)" ( (binary_expression "sVar47 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(sVar47 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(sVar47 >> 0x10)" identifier = (call_expression "(undefined2)(sVar47 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(sVar47 >> 0x10)" ( (binary_expression "sVar47 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "pcVar16 = local_164;" (assignment_expression "pcVar16 = local_164" identifier = identifier) ;) (if_statement "if (0 < (int)sVar47) {\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }" if (parenthesized_expression "(0 < (int)sVar47)" ( (binary_expression "0 < (int)sVar47" number_literal < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              bVar44 = false;\n              iVar15 = 0;\n              uVar20 = 0;\n              do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);\n              pcVar16 = local_164;\n              if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }\n            }" { (expression_statement "bVar44 = false;" (assignment_expression "bVar44 = false" identifier = false) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar15 < (int)sVar47);" do (compound_statement "{\n                uVar20 = uVar20 << 4;\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }\n                bVar44 = !bVar44;\n                if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              }" { (expression_statement "uVar20 = uVar20 << 4;" (assignment_expression "uVar20 = uVar20 << 4" identifier = (binary_expression "uVar20 << 4" identifier << number_literal)) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                  local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);\n                  uVar20 = uVar20 | local_e4 & 0xf;\n                }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset]);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset])" identifier = (cast_expression "(uint)(longlong)ROUND(pQVar23[image->channel_map[5].offset])" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(pQVar23[image->channel_map[5].offset])" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(pQVar23[image->channel_map[5].offset])" identifier (argument_list "(pQVar23[image->channel_map[5].offset])" ( (subscript_expression "pQVar23[image->channel_map[5].offset]" identifier [ (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) )))))) ;) (expression_statement "uVar20 = uVar20 | local_e4 & 0xf;" (assignment_expression "uVar20 = uVar20 | local_e4 & 0xf" identifier = (binary_expression "uVar20 | local_e4 & 0xf" identifier | (binary_expression "local_e4 & 0xf" identifier & number_literal))) ;) })) (expression_statement "bVar44 = !bVar44;" (assignment_expression "bVar44 = !bVar44" identifier = (unary_expression "!bVar44" ! identifier)) ;) (if_statement "if (!bVar44) {\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }" if (parenthesized_expression "(!bVar44)" ( (unary_expression "!bVar44" ! identifier) )) (compound_statement "{\n                  *local_164 = (char)uVar20;\n                  local_164 = local_164 + 1;\n                  uVar20 = 0;\n                  sVar47 = image->columns;\n                  local_17c = (byte)sVar47;\n                  uStack_17b = (undefined1)(sVar47 >> 8);\n                  uStack_17a = (undefined2)(sVar47 >> 0x10);\n                }" { (expression_statement "*local_164 = (char)uVar20;" (assignment_expression "*local_164 = (char)uVar20" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)uVar20" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "local_17c = (byte)sVar47;" (assignment_expression "local_17c = (byte)sVar47" identifier = (cast_expression "(byte)sVar47" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(sVar47 >> 8);" (assignment_expression "uStack_17b = (undefined1)(sVar47 >> 8)" identifier = (call_expression "(undefined1)(sVar47 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(sVar47 >> 8)" ( (binary_expression "sVar47 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(sVar47 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(sVar47 >> 0x10)" identifier = (call_expression "(undefined2)(sVar47 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(sVar47 >> 0x10)" ( (binary_expression "sVar47 >> 0x10" identifier >> number_literal) )))) ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "pQVar23 = pQVar23 + image->number_channels;" (assignment_expression "pQVar23 = pQVar23 + image->number_channels" identifier = (binary_expression "pQVar23 + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "sVar47 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) }) while (parenthesized_expression "(iVar15 < (int)sVar47)" ( (binary_expression "iVar15 < (int)sVar47" identifier < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "pcVar16 = local_164;" (assignment_expression "pcVar16 = local_164" identifier = identifier) ;) (if_statement "if (bVar44) {\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }" if (parenthesized_expression "(bVar44)" ( identifier )) (compound_statement "{\n                pcVar16 = local_164 + 1;\n                *local_164 = (char)(uVar20 << 4);\n                sVar47 = image->columns;\n              }" { (expression_statement "pcVar16 = local_164 + 1;" (assignment_expression "pcVar16 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = (char)(uVar20 << 4);" (assignment_expression "*local_164 = (char)(uVar20 << 4)" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)(uVar20 << 4)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar20 << 4)" ( (binary_expression "uVar20 << 4" identifier << number_literal) )))) ;) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) })) })) (expression_statement "iVar15 = (int)(sVar47 + 1) / 2;" (assignment_expression "iVar15 = (int)(sVar47 + 1) / 2" identifier = (binary_expression "(int)(sVar47 + 1) / 2" (cast_expression "(int)(sVar47 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar47 + 1)" ( (binary_expression "sVar47 + 1" identifier + number_literal) ))) / number_literal)) ;) (if_statement "if (iVar15 < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }" if (parenthesized_expression "(iVar15 < (int)uVar21)" ( (binary_expression "iVar15 < (int)uVar21" identifier < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));\n            }" { (expression_statement "pcVar37 = pcVar16;" (assignment_expression "pcVar37 = pcVar16" identifier = identifier) ;) (do_statement "do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + (uVar21 - iVar15));" do (compound_statement "{\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              }" { (expression_statement "pcVar34 = pcVar37 + 1;" (assignment_expression "pcVar34 = pcVar37 + 1" identifier = (binary_expression "pcVar37 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar37 = '\0';" (assignment_expression "*pcVar37 = '\0'" (pointer_expression "*pcVar37" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar37 = pcVar34;" (assignment_expression "pcVar37 = pcVar34" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar34 != pcVar16 + (uVar21 - iVar15))" ( (binary_expression "pcVar34 != pcVar16 + (uVar21 - iVar15)" identifier != (binary_expression "pcVar16 + (uVar21 - iVar15)" identifier + (parenthesized_expression "(uVar21 - iVar15)" ( (binary_expression "uVar21 - iVar15" identifier - identifier) )))) )) ;) })) (expression_statement "uVar20 = image->rows;" (assignment_expression "uVar20 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (if_statement "if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }" if (parenthesized_expression "(image->previous == (_Image *)0x0)" ( (binary_expression "image->previous == (_Image *)0x0" (field_expression "image->previous" identifier -> field_identifier) == (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }" { (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20)" identifier = (call_expression "SetImageProgress(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20)" identifier (argument_list "(image,"Save/Image",CONCAT44(local_148,local_14c),\n                                        (ulonglong)uVar20)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT44(local_148,local_14c)" identifier (argument_list "(local_148,local_14c)" ( identifier , identifier ))) , (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if (MVar14 == MagickFalse) goto LAB_001d1490;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "uVar20 = image->rows;" (assignment_expression "uVar20 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "bVar44 = 0xfffffffe < local_14c;" (assignment_expression "bVar44 = 0xfffffffe < local_14c" identifier = (binary_expression "0xfffffffe < local_14c" number_literal < identifier)) ;) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "local_148 = local_148 + (uint)bVar44;" (assignment_expression "local_148 = local_148 + (uint)bVar44" identifier = (binary_expression "local_148 + (uint)bVar44" identifier + (cast_expression "(uint)bVar44" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar18 < (int)uVar20)" ( (binary_expression "(int)uVar18 < (int)uVar20" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "bVar44 = bVar12 != 2;" (assignment_expression "bVar44 = bVar12 != 2" identifier = (binary_expression "bVar12 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar40 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }\n_L71:\n        bVar44 = bVar12 != 2;\n        bVar45 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar33 = bVar45 && bVar44;\n        if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;\n        memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);\n        if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);\n        p_Var6 = (_Image *)image_info->adjoin;\n        while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }\n        goto LAB_001d3a2a;" case number_literal : (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (expression_statement "uVar40 = 0;" (assignment_expression "uVar40 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }" if (parenthesized_expression "(0 < (int)image->rows)" ( (binary_expression "0 < (int)image->rows" number_literal < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) (compound_statement "{\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);\n        }" { (do_statement "do {\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          } while ((int)uVar40 < (int)uVar26);" do (compound_statement "{\n            pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;\n            pcVar16 = pcVar37;\n            if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }\n            if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }\n            uVar26 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }\n            uVar40 = uVar40 + 1;\n            bVar44 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar44;\n          }" { (expression_statement "pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception);" (assignment_expression "pQVar23 = GetVirtualPixels(image,0,uVar40,image->columns,1,exception)" identifier = (call_expression "GetVirtualPixels(image,0,uVar40,image->columns,1,exception)" identifier (argument_list "(image,0,uVar40,image->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (pQVar23 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar23 == (Quantum *)0x0)" ( (binary_expression "pQVar23 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21;" (assignment_expression "pcVar37 = local_168 + (~uVar40 + image->rows) * uVar21" identifier = (binary_expression "local_168 + (~uVar40 + image->rows) * uVar21" identifier + (binary_expression "(~uVar40 + image->rows) * uVar21" (parenthesized_expression "(~uVar40 + image->rows)" ( (binary_expression "~uVar40 + image->rows" (unary_expression "~uVar40" ~ identifier) + (field_expression "image->rows" identifier -> field_identifier)) )) * identifier))) ;) (expression_statement "pcVar16 = pcVar37;" (assignment_expression "pcVar16 = pcVar37" identifier = identifier) ;) (if_statement "if ((int)image->columns < 1) {\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }\n            else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }" if (parenthesized_expression "((int)image->columns < 1)" ( (binary_expression "(int)image->columns < 1" (cast_expression "(int)image->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "image->columns" identifier -> field_identifier)) < number_literal) )) (compound_statement "{\n              iVar15 = 0;\n              pcVar34 = pcVar37;\n            }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar34 = pcVar37;" (assignment_expression "pcVar34 = pcVar37" identifier = identifier) ;) }) (else_clause "else {\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }" else (compound_statement "{\n              do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);\n            }" { (do_statement "do {\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              } while (iVar15 < (int)image->columns);" do (compound_statement "{\n                cVar30 = '\0';\n                if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }\n                pcVar34 = pcVar16 + 1;\n                *pcVar16 = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                iVar15 = (int)pcVar34 - (int)pcVar37;\n                pcVar16 = pcVar34;\n              }" { (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (image->channel_map[5].traits != UndefinedPixelTrait) {\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }" if (parenthesized_expression "(image->channel_map[5].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[5].traits != UndefinedPixelTrait" (field_expression "image->channel_map[5].traits" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                  cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);\n                }" { (expression_statement "cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset]);" (assignment_expression "cVar30 = (char)(short)ROUND(pQVar23[image->channel_map[5].offset])" identifier = (cast_expression "(char)(short)ROUND(pQVar23[image->channel_map[5].offset])" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(pQVar23[image->channel_map[5].offset])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(pQVar23[image->channel_map[5].offset])" identifier (argument_list "(pQVar23[image->channel_map[5].offset])" ( (subscript_expression "pQVar23[image->channel_map[5].offset]" identifier [ (field_expression "image->channel_map[5].offset" (subscript_expression "image->channel_map[5]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) )))))) ;) })) (expression_statement "pcVar34 = pcVar16 + 1;" (assignment_expression "pcVar34 = pcVar16 + 1" identifier = (binary_expression "pcVar16 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar16 = cVar30;" (assignment_expression "*pcVar16 = cVar30" (pointer_expression "*pcVar16" * identifier) = identifier) ;) (expression_statement "pQVar23 = pQVar23 + image->number_channels;" (assignment_expression "pQVar23 = pQVar23 + image->number_channels" identifier = (binary_expression "pQVar23 + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "iVar15 = (int)pcVar34 - (int)pcVar37;" (assignment_expression "iVar15 = (int)pcVar34 - (int)pcVar37" identifier = (binary_expression "(int)pcVar34 - (int)pcVar37" (cast_expression "(int)pcVar34" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar37" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar16 = pcVar34;" (assignment_expression "pcVar16 = pcVar34" identifier = identifier) ;) }) while (parenthesized_expression "(iVar15 < (int)image->columns)" ( (binary_expression "iVar15 < (int)image->columns" identifier < (cast_expression "(int)image->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "image->columns" identifier -> field_identifier))) )) ;) }))) (if_statement "if (iVar15 < (int)uVar21) {\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }" if (parenthesized_expression "(iVar15 < (int)uVar21)" ( (binary_expression "iVar15 < (int)uVar21" identifier < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar16 = pcVar34;\n              do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));\n            }" { (expression_statement "pcVar16 = pcVar34;" (assignment_expression "pcVar16 = pcVar34" identifier = identifier) ;) (do_statement "do {\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              } while (pcVar37 != pcVar34 + (uVar21 - iVar15));" do (compound_statement "{\n                pcVar37 = pcVar16 + 1;\n                *pcVar16 = '\0';\n                pcVar16 = pcVar37;\n              }" { (expression_statement "pcVar37 = pcVar16 + 1;" (assignment_expression "pcVar37 = pcVar16 + 1" identifier = (binary_expression "pcVar16 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar16 = '\0';" (assignment_expression "*pcVar16 = '\0'" (pointer_expression "*pcVar16" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar16 = pcVar37;" (assignment_expression "pcVar16 = pcVar37" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar37 != pcVar34 + (uVar21 - iVar15))" ( (binary_expression "pcVar37 != pcVar34 + (uVar21 - iVar15)" identifier != (binary_expression "pcVar34 + (uVar21 - iVar15)" identifier + (parenthesized_expression "(uVar21 - iVar15)" ( (binary_expression "uVar21 - iVar15" identifier - identifier) )))) )) ;) })) (expression_statement "uVar26 = image->rows;" (assignment_expression "uVar26 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (if_statement "if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }" if (parenthesized_expression "(image->previous == (_Image *)0x0)" ( (binary_expression "image->previous == (_Image *)0x0" (field_expression "image->previous" identifier -> field_identifier) == (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);\n              if (MVar14 == MagickFalse) break;\n              uVar26 = image->rows;\n            }" { (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26)" identifier = (call_expression "SetImageProgress(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26)" identifier (argument_list "(image,"Save/Image",CONCAT44(local_160,local_164),\n                                        (ulonglong)uVar26)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT44(local_160,local_164)" identifier (argument_list "(local_160,local_164)" ( identifier , identifier ))) , (cast_expression "(ulonglong)uVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if (MVar14 == MagickFalse) break;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar26 = image->rows;" (assignment_expression "uVar26 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (expression_statement "uVar40 = uVar40 + 1;" (assignment_expression "uVar40 = uVar40 + 1" identifier = (binary_expression "uVar40 + 1" identifier + number_literal)) ;) (expression_statement "bVar44 = 0xfffffffe < local_164;" (assignment_expression "bVar44 = 0xfffffffe < local_164" identifier = (binary_expression "0xfffffffe < local_164" number_literal < identifier)) ;) (expression_statement "local_164 = (char *)((int)local_164 + 1);" (assignment_expression "local_164 = (char *)((int)local_164 + 1)" identifier = (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_160 = local_160 + (uint)bVar44;" (assignment_expression "local_160 = local_160 + (uint)bVar44" identifier = (binary_expression "local_160 + (uint)bVar44" identifier + (cast_expression "(uint)bVar44" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar40 < (int)uVar26)" ( (binary_expression "(int)uVar40 < (int)uVar26" (cast_expression "(int)uVar40" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "_L71:\n        bVar44 = bVar12 != 2;" statement_identifier : (expression_statement "bVar44 = bVar12 != 2;" (assignment_expression "bVar44 = bVar12 != 2" identifier = (binary_expression "bVar12 != 2" identifier != number_literal)) ;)) (expression_statement "bVar45 = CONCAT11(uStack_17b,local_17c) == 8;" (assignment_expression "bVar45 = CONCAT11(uStack_17b,local_17c) == 8" identifier = (binary_expression "CONCAT11(uStack_17b,local_17c) == 8" (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) == number_literal)) ;) (expression_statement "bVar33 = bVar45 && bVar44;" (assignment_expression "bVar33 = bVar45 && bVar44" identifier = (binary_expression "bVar45 && bVar44" identifier && identifier)) ;) (if_statement "if ((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))\n        goto LAB_001d149a;" if (parenthesized_expression "((!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression))" ( (binary_expression "(!bVar45 || !bVar44) || (bVar44 = bVar33, image_info->compression == NoCompression)" (parenthesized_expression "(!bVar45 || !bVar44)" ( (binary_expression "!bVar45 || !bVar44" (unary_expression "!bVar45" ! identifier) || (unary_expression "!bVar44" ! identifier)) )) || (parenthesized_expression "(bVar44 = bVar33, image_info->compression == NoCompression)" ( (comma_expression "bVar44 = bVar33, image_info->compression == NoCompression" (assignment_expression "bVar44 = bVar33" identifier = identifier) , (binary_expression "image_info->compression == NoCompression" (field_expression "image_info->compression" identifier -> field_identifier) == identifier)) ))) )) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;)) (expression_statement "memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2);" (assignment_expression "memory_info = AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2)" identifier = (call_expression "AcquireVirtualMemory(uVar20 * 8 + 6,image->rows + 2)" identifier (argument_list "(uVar20 * 8 + 6,image->rows + 2)" ( (binary_expression "uVar20 * 8 + 6" (binary_expression "uVar20 * 8" identifier * number_literal) + number_literal) , (binary_expression "image->rows + 2" (field_expression "image->rows" identifier -> field_identifier) + number_literal) )))) ;) (if_statement "if (memory_info != (MemoryInfo *)0x0) {\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" if (parenthesized_expression "(memory_info != (MemoryInfo *)0x0)" ( (binary_expression "memory_info != (MemoryInfo *)0x0" identifier != (cast_expression "(MemoryInfo *)0x0" ( (type_descriptor "MemoryInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);\n          bmp_info.file_size = uVar18;\n          if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }\n          if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = pcVar16;\n          if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));\n          local_128 = (char *)(bmp_info.image_size + uVar18);\n          bmp_info.file_size = (uint)local_128;\n          RelinquishVirtualMemory(local_124);\n          bmp_info.compression = 1;\n          local_168 = pcVar16;\n          local_124 = memory_info;\n          if (image->debug == MagickFalse) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" { (expression_statement "pcVar16 = (char *)GetVirtualMemoryBlob(memory_info);" (assignment_expression "pcVar16 = (char *)GetVirtualMemoryBlob(memory_info)" identifier = (cast_expression "(char *)GetVirtualMemoryBlob(memory_info)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetVirtualMemoryBlob(memory_info)" identifier (argument_list "(memory_info)" ( identifier ))))) ;) (expression_statement "bmp_info.file_size = uVar18;" (assignment_expression "bmp_info.file_size = uVar18" (field_expression "bmp_info.file_size" identifier . field_identifier) = identifier) ;) (if_statement "if (image->signature != 0xabacadab) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" if (parenthesized_expression "(image->signature != 0xabacadab)" ( (binary_expression "image->signature != 0xabacadab" (field_expression "image->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" { comment (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""EncodeImage"" " string_content ") ))) ;) })) (if_statement "if (image->debug != MagickFalse) {\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }" if (parenthesized_expression "(image->debug != MagickFalse)" ( (binary_expression "image->debug != MagickFalse" (field_expression "image->debug" identifier -> field_identifier) != identifier) )) (compound_statement "{\n            LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );\n          }" { (expression_statement "LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          );" (call_expression "LogMagickEvent(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          )" identifier (argument_list "(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)image->filename\n                          )" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""EncodeImage"" " string_content ") , number_literal , (string_literal ""%s"" " string_content ") , (cast_expression "(short)image->filename" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (field_expression "image->filename" identifier -> field_identifier)) ))) ;) })) (if_statement "if (pcVar16 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" { comment (expression_statement "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");" (call_expression "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" identifier (argument_list "("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" ( (string_literal ""compressed_pixels != (unsigned char *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""EncodeImage"" " string_content ") ))) ;) })) (expression_statement "local_164 = pcVar16;" (assignment_expression "local_164 = pcVar16" identifier = identifier) ;) (if_statement "if (0 < (int)image->rows) {\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }" if (parenthesized_expression "(0 < (int)image->rows)" ( (binary_expression "0 < (int)image->rows" number_literal < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) (compound_statement "{\n            local_134 = 0;\n            iVar15 = 0;\n            do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);\n          }" { (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            } while (iVar15 < (int)image->rows);" do (compound_statement "{\n              iVar22 = 0;\n              pcVar37 = local_164;\n              if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = pcVar37 + 2;\n              pcVar37[0] = '\0';\n              pcVar37[1] = '\0';\n              MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);\n              if (MVar14 == MagickFalse) break;\n              iVar15 = iVar15 + 1;\n              local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);\n            }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (expression_statement "pcVar37 = local_164;" (assignment_expression "pcVar37 = local_164" identifier = identifier) ;) (if_statement "if (uVar20 != 0) {\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar27 = 1;\n                if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }\n                *local_164 = '\x01';\n                pcVar37 = local_164 + 2;\n                local_164[1] = *local_168;\n                local_168 = local_168 + 1;\n              }" { (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;) (if_statement "if (1 < uVar21) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }" if (parenthesized_expression "(1 < uVar21)" ( (binary_expression "1 < uVar21" number_literal < identifier) )) (compound_statement "{\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);\n                }" { (do_statement "do {\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  } while (iVar27 < (int)uVar21);" do (compound_statement "{\n                    if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }\n                    local_164 = local_164 + 2;\n                    iVar27 = iVar22 + 1;\n                    local_168 = pcVar34;\n                  }" { (if_statement "if (*local_168 == local_168[1]) {\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }" if (parenthesized_expression "(*local_168 == local_168[1])" ( (binary_expression "*local_168 == local_168[1]" (pointer_expression "*local_168" * identifier) == (subscript_expression "local_168[1]" identifier [ number_literal ])) )) (compound_statement "{\n                      iVar27 = 1;\n                      pcVar37 = local_168 + 2;\n                      do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);\n                      *local_164 = (char)iVar27;\n                      pcVar37 = local_164 + 2;\n                      local_164[1] = *local_168;\n                      iVar22 = iVar42;\n                      local_168 = pcVar34;\n                      if ((int)uVar21 <= iVar42) goto LAB_001d2581;\n                    }" { (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;) (expression_statement "pcVar37 = local_168 + 2;" (assignment_expression "pcVar37 = local_168 + 2" identifier = (binary_expression "local_168 + 2" identifier + number_literal)) ;) (do_statement "do {\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      } while (*pcVar34 == *local_168);" do (compound_statement "{\n                        pcVar34 = pcVar37;\n                        iVar27 = iVar27 + 1;\n                        iVar42 = iVar22 + iVar27;\n                        if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }\n                        if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar37 = pcVar34 + 1;\n                      }" { (expression_statement "pcVar34 = pcVar37;" (assignment_expression "pcVar34 = pcVar37" identifier = identifier) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar42 = iVar22 + iVar27;" (assignment_expression "iVar42 = iVar22 + iVar27" identifier = (binary_expression "iVar22 + iVar27" identifier + identifier)) ;) (if_statement "if (iVar27 == uVar21 - iVar22) {\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }" if (parenthesized_expression "(iVar27 == uVar21 - iVar22)" ( (binary_expression "iVar27 == uVar21 - iVar22" identifier == (binary_expression "uVar21 - iVar22" identifier - identifier)) )) (compound_statement "{\n                          pcVar34 = local_168 + iVar27;\n                          break;\n                        }" { (expression_statement "pcVar34 = local_168 + iVar27;" (assignment_expression "pcVar34 = local_168 + iVar27" identifier = (binary_expression "local_168 + iVar27" identifier + identifier)) ;) (break_statement "break;" break ;) })) (if_statement "if (iVar27 == 0xff) {\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }" if (parenthesized_expression "(iVar27 == 0xff)" ( (binary_expression "iVar27 == 0xff" identifier == number_literal) )) (compound_statement "{\n                          iVar27 = -1;\n                          pcVar34 = local_168 + 0xff;\n                          break;\n                        }" { (expression_statement "iVar27 = -1;" (assignment_expression "iVar27 = -1" identifier = number_literal) ;) (expression_statement "pcVar34 = local_168 + 0xff;" (assignment_expression "pcVar34 = local_168 + 0xff" identifier = (binary_expression "local_168 + 0xff" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar37 = pcVar34 + 1;" (assignment_expression "pcVar37 = pcVar34 + 1" identifier = (binary_expression "pcVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar34 == *local_168)" ( (binary_expression "*pcVar34 == *local_168" (pointer_expression "*pcVar34" * identifier) == (pointer_expression "*local_168" * identifier)) )) ;) (expression_statement "*local_164 = (char)iVar27;" (assignment_expression "*local_164 = (char)iVar27" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)iVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar37 = local_164 + 2;" (assignment_expression "pcVar37 = local_164 + 2" identifier = (binary_expression "local_164 + 2" identifier + number_literal)) ;) (expression_statement "local_164[1] = *local_168;" (assignment_expression "local_164[1] = *local_168" (subscript_expression "local_164[1]" identifier [ number_literal ]) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "iVar22 = iVar42;" (assignment_expression "iVar22 = iVar42" identifier = identifier) ;) (expression_statement "local_168 = pcVar34;" (assignment_expression "local_168 = pcVar34" identifier = identifier) ;) (if_statement "if ((int)uVar21 <= iVar42) goto LAB_001d2581;" if (parenthesized_expression "((int)uVar21 <= iVar42)" ( (binary_expression "(int)uVar21 <= iVar42" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_001d2581;" goto statement_identifier ;)) }) (else_clause "else {\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }" else (compound_statement "{\n                      pcVar34 = local_168 + 1;\n                      *local_164 = '\x01';\n                      local_164[1] = *local_168;\n                      iVar22 = iVar27;\n                    }" { (expression_statement "pcVar34 = local_168 + 1;" (assignment_expression "pcVar34 = local_168 + 1" identifier = (binary_expression "local_168 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = '\x01';" (assignment_expression "*local_164 = '\x01'" (pointer_expression "*local_164" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_164[1] = *local_168;" (assignment_expression "local_164[1] = *local_168" (subscript_expression "local_164[1]" identifier [ number_literal ]) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "iVar22 = iVar27;" (assignment_expression "iVar22 = iVar27" identifier = identifier) ;) }))) (expression_statement "local_164 = local_164 + 2;" (assignment_expression "local_164 = local_164 + 2" identifier = (binary_expression "local_164 + 2" identifier + number_literal)) ;) (expression_statement "iVar27 = iVar22 + 1;" (assignment_expression "iVar27 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "local_168 = pcVar34;" (assignment_expression "local_168 = pcVar34" identifier = identifier) ;) }) while (parenthesized_expression "(iVar27 < (int)uVar21)" ( (binary_expression "iVar27 < (int)uVar21" identifier < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "*local_164 = '\x01';" (assignment_expression "*local_164 = '\x01'" (pointer_expression "*local_164" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pcVar37 = local_164 + 2;" (assignment_expression "pcVar37 = local_164 + 2" identifier = (binary_expression "local_164 + 2" identifier + number_literal)) ;) (expression_statement "local_164[1] = *local_168;" (assignment_expression "local_164[1] = *local_168" (subscript_expression "local_164[1]" identifier [ number_literal ]) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "local_168 = local_168 + 1;" (assignment_expression "local_168 = local_168 + 1" identifier = (binary_expression "local_168 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_001d2581:\n              local_164 = pcVar37 + 2;" statement_identifier : (expression_statement "local_164 = pcVar37 + 2;" (assignment_expression "local_164 = pcVar37 + 2" identifier = (binary_expression "pcVar37 + 2" identifier + number_literal)) ;)) (expression_statement "pcVar37[0] = '\0';" (assignment_expression "pcVar37[0] = '\0'" (subscript_expression "pcVar37[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar37[1] = '\0';" (assignment_expression "pcVar37[1] = '\0'" (subscript_expression "pcVar37[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows)" identifier = (call_expression "SetImageProgress(image,"Save/Image",local_134,(ulonglong)image->rows)" identifier (argument_list "(image,"Save/Image",local_134,(ulonglong)image->rows)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , (cast_expression "(ulonglong)image->rows" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "image->rows" identifier -> field_identifier)) )))) ;) (if_statement "if (MVar14 == MagickFalse) break;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1);" (assignment_expression "local_134 = CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1)" identifier = (call_expression "CONCAT44(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1)" identifier (argument_list "(local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134),\n                                   (uint)local_134 + 1)" ( (binary_expression "local_134._4_4_ + (uint)(0xfffffffe < (uint)local_134)" (field_expression "local_134._4_4_" identifier . field_identifier) + (call_expression "(uint)(0xfffffffe < (uint)local_134)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < (uint)local_134)" ( (binary_expression "0xfffffffe < (uint)local_134" number_literal < (cast_expression "(uint)local_134" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(uint)local_134 + 1" (cast_expression "(uint)local_134" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar15 < (int)image->rows)" ( (binary_expression "iVar15 < (int)image->rows" identifier < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) ;) })) (expression_statement "local_164[0] = '\0';" (assignment_expression "local_164[0] = '\0'" (subscript_expression "local_164[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_164[1] = '\x01';" (assignment_expression "local_164[1] = '\x01'" (subscript_expression "local_164[1]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16));" (assignment_expression "bmp_info.image_size = (uint)(local_164 + (2 - (int)pcVar16))" (field_expression "bmp_info.image_size" identifier . field_identifier) = (call_expression "(uint)(local_164 + (2 - (int)pcVar16))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_164 + (2 - (int)pcVar16))" ( (binary_expression "local_164 + (2 - (int)pcVar16)" identifier + (parenthesized_expression "(2 - (int)pcVar16)" ( (binary_expression "2 - (int)pcVar16" number_literal - (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "local_128 = (char *)(bmp_info.image_size + uVar18);" (assignment_expression "local_128 = (char *)(bmp_info.image_size + uVar18)" identifier = (cast_expression "(char *)(bmp_info.image_size + uVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(bmp_info.image_size + uVar18)" ( (binary_expression "bmp_info.image_size + uVar18" (field_expression "bmp_info.image_size" identifier . field_identifier) + identifier) )))) ;) (expression_statement "bmp_info.file_size = (uint)local_128;" (assignment_expression "bmp_info.file_size = (uint)local_128" (field_expression "bmp_info.file_size" identifier . field_identifier) = (cast_expression "(uint)local_128" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "bmp_info.compression = 1;" (assignment_expression "bmp_info.compression = 1" (field_expression "bmp_info.compression" identifier . field_identifier) = number_literal) ;) (expression_statement "local_168 = pcVar16;" (assignment_expression "local_168 = pcVar16" identifier = identifier) ;) (expression_statement "local_124 = memory_info;" (assignment_expression "local_124 = memory_info" identifier = identifier) ;) (if_statement "if (image->debug == MagickFalse) goto LAB_001d14a8;" if (parenthesized_expression "(image->debug == MagickFalse)" ( (binary_expression "image->debug == MagickFalse" (field_expression "image->debug" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_001d14a8;" goto statement_identifier ;)) (goto_statement "goto LAB_001d2640;" goto statement_identifier ;) })) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename);" (call_expression "ThrowMagickException\n                  (exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename)" identifier (argument_list "(exception,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,\n                   "MemoryAllocationFailed","`%s\'",image->filename)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , identifier , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (field_expression "image->filename" identifier -> field_identifier) ))) ;) (expression_statement "p_Var6 = (_Image *)image_info->adjoin;" (assignment_expression "p_Var6 = (_Image *)image_info->adjoin" identifier = (cast_expression "(_Image *)image_info->adjoin" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "image_info->adjoin" identifier -> field_identifier))) ;) (while_statement "while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }" while (parenthesized_expression "(pIVar9 = image, p_Var6 != (_Image *)0x0)" ( (comma_expression "pIVar9 = image, p_Var6 != (_Image *)0x0" (assignment_expression "pIVar9 = image" identifier = identifier) , (binary_expression "p_Var6 != (_Image *)0x0" identifier != (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n          p_Var6 = pIVar9->previous;\n          image = p_Var6;\n          pIVar24 = pIVar9;\n        }" { (expression_statement "p_Var6 = pIVar9->previous;" (assignment_expression "p_Var6 = pIVar9->previous" identifier = (field_expression "pIVar9->previous" identifier -> field_identifier)) ;) (expression_statement "image = p_Var6;" (assignment_expression "image = p_Var6" identifier = identifier) ;) (expression_statement "pIVar24 = pIVar9;" (assignment_expression "pIVar24 = pIVar9" identifier = identifier) ;) })) (goto_statement "goto LAB_001d3a2a;" goto statement_identifier ;)) (case_statement "case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        local_100 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "local_104 = 0;" (assignment_expression "local_104 = 0" identifier = number_literal) ;) (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < (int)image->rows)" ( (binary_expression "0 < (int)image->rows" number_literal < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) (compound_statement "{\n          do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          } while ((int)local_14c < (int)uVar18);" do (compound_statement "{\n            pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            sVar47 = image->columns;\n            puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);\n            puVar38 = puVar25;\n            if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }\n            if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_14c = local_14c + 1;\n            bVar44 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            local_100 = local_100 + (uint)bVar44;\n          }" { (expression_statement "pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception);" (assignment_expression "pQVar23 = GetVirtualPixels(image,0,local_14c,image->columns,1,exception)" identifier = (call_expression "GetVirtualPixels(image,0,local_14c,image->columns,1,exception)" identifier (argument_list "(image,0,local_14c,image->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (pQVar23 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar23 == (Quantum *)0x0)" ( (binary_expression "pQVar23 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = image->rows;" (assignment_expression "uVar18 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21);" (assignment_expression "puVar25 = (ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21)" identifier = (cast_expression "(ushort *)(local_168 + ((uVar18 - 1) - local_14c) * uVar21)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_168 + ((uVar18 - 1) - local_14c) * uVar21)" ( (binary_expression "local_168 + ((uVar18 - 1) - local_14c) * uVar21" identifier + (binary_expression "((uVar18 - 1) - local_14c) * uVar21" (parenthesized_expression "((uVar18 - 1) - local_14c)" ( (binary_expression "(uVar18 - 1) - local_14c" (parenthesized_expression "(uVar18 - 1)" ( (binary_expression "uVar18 - 1" identifier - number_literal) )) - identifier) )) * identifier)) )))) ;) (expression_statement "puVar38 = puVar25;" (assignment_expression "puVar38 = puVar25" identifier = identifier) ;) (if_statement "if (0 < (int)sVar47) {\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }" if (parenthesized_expression "(0 < (int)sVar47)" ( (binary_expression "0 < (int)sVar47" number_literal < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              sVar4 = image->number_channels;\n              pPVar5 = image->channel_map;\n              puVar38 = puVar25 + sVar47;\n              iVar22 = pPVar5->offset;\n              do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);\n            }" { (expression_statement "sVar4 = image->number_channels;" (assignment_expression "sVar4 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "puVar38 = puVar25 + sVar47;" (assignment_expression "puVar38 = puVar25 + sVar47" identifier = (binary_expression "puVar25 + sVar47" identifier + identifier)) ;) (expression_statement "iVar22 = pPVar5->offset;" (assignment_expression "iVar22 = pPVar5->offset" identifier = (field_expression "pPVar5->offset" identifier -> field_identifier)) ;) (do_statement "do {\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              } while (puVar25 != puVar38);" do (compound_statement "{\n                dVar1 = pQVar23[iVar22];\n                if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }\n                *puVar25 = uVar13;\n                pQVar23 = pQVar23 + sVar4;\n                puVar25 = puVar25 + 1;\n              }" { (expression_statement "dVar1 = pQVar23[iVar22];" (assignment_expression "dVar1 = pQVar23[iVar22]" identifier = (subscript_expression "pQVar23[iVar22]" identifier [ identifier ])) ;) (if_statement "if (iVar15 == 3) {\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }\n                else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar15 == 3)" ( (binary_expression "iVar15 == 3" identifier == number_literal) )) (compound_statement "{\n                  uVar13 = 0xf000;\n                  if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }\n                }" { (expression_statement "uVar13 = 0xf000;" (assignment_expression "uVar13 = 0xf000" identifier = number_literal) ;) (if_statement "if (pPVar5[4].traits != UndefinedPixelTrait) {\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }" if (parenthesized_expression "(pPVar5[4].traits != UndefinedPixelTrait)" ( (binary_expression "pPVar5[4].traits != UndefinedPixelTrait" (field_expression "pPVar5[4].traits" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                    uVar13 = 0;\n                    if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }\n                  }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < pQVar23[pPVar5[4].offset]) {\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[4].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[4].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[4].offset]" identifier [ (field_expression "pPVar5[4].offset" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                      dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;\n                      if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }\n                    }" { (expression_statement "dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710;" (assignment_expression "dVar8 = (pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74) /\n                              (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74)" ( (binary_expression "pQVar23[pPVar5[4].offset] * (double)DAT_002a9b74" (subscript_expression "pQVar23[pPVar5[4].offset]" identifier [ (field_expression "pPVar5[4].offset" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar8 < (double)DAT_0029f714) {\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar13 = 0xf000;\n                      }" if (parenthesized_expression "(dVar8 < (double)DAT_0029f714)" ( (binary_expression "dVar8 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar8 = dVar8 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xc);\n                      }" { (expression_statement "dVar8 = dVar8 + (double)DAT_0029f124;" (assignment_expression "dVar8 = dVar8 + (double)DAT_0029f124" identifier = (binary_expression "dVar8 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar8) {\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar8)" ( (binary_expression "(double)DAT_0029f134 <= dVar8" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar8 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar8 - (double)DAT_0029f134)" identifier (argument_list "(dVar8 - (double)DAT_0029f134)" ( (binary_expression "dVar8 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar8);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar8);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar8)" identifier (argument_list "(dVar8)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = (ushort)(local_e4 << 0xc);" (assignment_expression "uVar13 = (ushort)(local_e4 << 0xc)" identifier = (call_expression "(ushort)(local_e4 << 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xc)" ( (binary_expression "local_e4 << 0xc" identifier << number_literal) )))) ;) }) (else_clause "else {\n                        uVar13 = 0xf000;\n                      }" else (compound_statement "{\n                        uVar13 = 0xf000;\n                      }" { (expression_statement "uVar13 = 0xf000;" (assignment_expression "uVar13 = 0xf000" identifier = number_literal) ;) }))) })) })) (if_statement "if (0.0 < dVar1) {\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                    dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }\n                  }" { (expression_statement "dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar1 = (dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar1 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar1 * (double)DAT_002a9b74)" ( (binary_expression "dVar1 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xff00;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar1)" ( (binary_expression "(double)DAT_0029f714 <= dVar1" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      uVar13 = 0xff00;\n                    }" { (expression_statement "uVar13 = 0xff00;" (assignment_expression "uVar13 = 0xff00" identifier = number_literal) ;) }) (else_clause "else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }" else (compound_statement "{\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 8);\n                    }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }" else (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = uVar13 | (ushort)(local_e4 << 8);" (assignment_expression "uVar13 = uVar13 | (ushort)(local_e4 << 8)" identifier = (binary_expression "uVar13 | (ushort)(local_e4 << 8)" identifier | (call_expression "(ushort)(local_e4 << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 8)" ( (binary_expression "local_e4 << 8" identifier << number_literal) ))))) ;) }))) })) (if_statement "if (0.0 < pQVar23[pPVar5[1].offset]) {\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[1].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[1].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                    dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }\n                  }" { (expression_statement "dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;" (assignment_expression "dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74)" ( (binary_expression "pQVar23[pPVar5[1].offset] * (double)DAT_002a9b74" (subscript_expression "pQVar23[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar1) {\n                      uVar13 = 0xfff0;\n                    }\n                    else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar1)" ( (binary_expression "(double)DAT_0029f714 <= dVar1" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      uVar13 = 0xfff0;\n                    }" { (expression_statement "uVar13 = 0xfff0;" (assignment_expression "uVar13 = 0xfff0" identifier = number_literal) ;) }) (else_clause "else {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }" else (compound_statement "{\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }\n                      uVar13 = uVar13 | (ushort)(local_e4 << 4);\n                    }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }" else (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar1);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = uVar13 | (ushort)(local_e4 << 4);" (assignment_expression "uVar13 = uVar13 | (ushort)(local_e4 << 4)" identifier = (binary_expression "uVar13 | (ushort)(local_e4 << 4)" identifier | (call_expression "(ushort)(local_e4 << 4)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 4)" ( (binary_expression "local_e4 << 4" identifier << number_literal) ))))) ;) }))) })) (if_statement "if (0.0 < pQVar23[pPVar5[2].offset]) {\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[2].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[2].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                    dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;\n                    if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar13 = 0xffff;\n                  }" { (expression_statement "dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710;" (assignment_expression "dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74) /\n                            (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74)" ( (binary_expression "pQVar23[pPVar5[2].offset] * (double)DAT_002a9b74" (subscript_expression "pQVar23[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar1 < (double)DAT_0029f714) {\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" if (parenthesized_expression "(dVar1 < (double)DAT_0029f714)" ( (binary_expression "dVar1 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar1 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }" if (parenthesized_expression "(dVar1 < (double)DAT_0029f134)" ( (binary_expression "dVar1 < (double)DAT_0029f134" identifier < (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }" { (labeled_statement "LAB_001d2faa:\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);" statement_identifier : (expression_statement "uVar32 = (ushort)(longlong)ROUND(dVar1);" (assignment_expression "uVar32 = (ushort)(longlong)ROUND(dVar1)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar1)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;)) }) (else_clause "else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }" else (compound_statement "{\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }" { (expression_statement "uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) (goto_statement "goto LAB_001d21be;" goto statement_identifier ;) })) (labeled_statement "LAB_001d2eba:\n                    uVar13 = 0xffff;" statement_identifier : (expression_statement "uVar13 = 0xffff;" (assignment_expression "uVar13 = 0xffff" identifier = number_literal) ;)) })) }) (else_clause "else {\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }" else (compound_statement "{\n                  uVar13 = 0;\n                  if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }\n                }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if (iVar15 == 2) {\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }" if (parenthesized_expression "(iVar15 == 2)" ( (binary_expression "iVar15 == 2" identifier == number_literal) )) (compound_statement "{\n                    if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }" { (if_statement "if (0.0 < dVar1) {\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                      uVar13 = 0xf800;\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" { (expression_statement "uVar13 = 0xf800;" (assignment_expression "uVar13 = 0xf800" identifier = number_literal) ;) (expression_statement "dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar1 * (double)DAT_002c5ed8)" ( (binary_expression "dVar1 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }" if (parenthesized_expression "(dVar1 < (double)DAT_0029f714)" ( (binary_expression "dVar1 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = (ushort)(local_e4 << 0xb);\n                      }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = (ushort)(local_e4 << 0xb);" (assignment_expression "uVar13 = (ushort)(local_e4 << 0xb)" identifier = (call_expression "(ushort)(local_e4 << 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xb)" ( (binary_expression "local_e4 << 0xb" identifier << number_literal) )))) ;) })) })) (if_statement "if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[1].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[1].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }" { (expression_statement "dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710;" (assignment_expression "dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c) /\n                              (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c)" ( (binary_expression "pQVar23[pPVar5[1].offset] * (double)DAT_002cc81c" (subscript_expression "pQVar23[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002cc81c" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar1)" ( (binary_expression "(double)DAT_0029f714 <= dVar1" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar13 = 0xffe0;\n                      }" { (expression_statement "uVar13 = 0xffe0;" (assignment_expression "uVar13 = 0xffe0" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }" else (compound_statement "{\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = uVar13 | (ushort)(local_e4 << 5);" (assignment_expression "uVar13 = uVar13 | (ushort)(local_e4 << 5)" identifier = (binary_expression "uVar13 | (ushort)(local_e4 << 5)" identifier | (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 5)" ( (binary_expression "local_e4 << 5" identifier << number_literal) ))))) ;) }))) })) (if_statement "if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[2].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[2].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" { (expression_statement "dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;" (assignment_expression "dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8)" ( (binary_expression "pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8" (subscript_expression "pQVar23[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar1 < (double)DAT_0029f714) {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" if (parenthesized_expression "(dVar1 < (double)DAT_0029f714)" ( (binary_expression "dVar1 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar1 < (double)DAT_0029f134) goto LAB_001d2faa;" if (parenthesized_expression "(dVar1 < (double)DAT_0029f134)" ( (binary_expression "dVar1 < (double)DAT_0029f134" identifier < (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001d2faa;" goto statement_identifier ;)) (expression_statement "uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (goto_statement "goto LAB_001d21be;" goto statement_identifier ;) })) (goto_statement "goto LAB_001d2eba;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }" else (compound_statement "{\n                    uVar13 = 0;\n                    if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }\n                  }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if ((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))\n                    {\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }" if (parenthesized_expression "((iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait))" ( (binary_expression "(iVar15 == 4) && (uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait)" (parenthesized_expression "(iVar15 == 4)" ( (binary_expression "iVar15 == 4" identifier == number_literal) )) && (parenthesized_expression "(uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait)" ( (comma_expression "uVar13 = 0x8000, pPVar5[4].traits != UndefinedPixelTrait" (assignment_expression "uVar13 = 0x8000" identifier = number_literal) , (binary_expression "pPVar5[4].traits != UndefinedPixelTrait" (field_expression "pPVar5[4].traits" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) != identifier)) ))) )) (compound_statement "{\n                      uVar13 = 0;\n                      if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }\n                    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < pQVar23[pPVar5[4].offset]) {\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[4].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[4].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[4].offset]" identifier [ (field_expression "pPVar5[4].offset" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                        dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;\n                        if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }\n                      }" { (expression_statement "dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710;" (assignment_expression "dVar8 = pQVar23[pPVar5[4].offset] / (double)DAT_0029f710" identifier = (binary_expression "pQVar23[pPVar5[4].offset] / (double)DAT_0029f710" (subscript_expression "pQVar23[pPVar5[4].offset]" identifier [ (field_expression "pPVar5[4].offset" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar8 < (double)DAT_0029f714) {\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar13 = 0x8000;\n                        }" if (parenthesized_expression "(dVar8 < (double)DAT_0029f714)" ( (binary_expression "dVar8 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                          dVar8 = dVar8 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }\n                          uVar13 = (ushort)(local_e4 << 0xf);\n                        }" { (expression_statement "dVar8 = dVar8 + (double)DAT_0029f124;" (assignment_expression "dVar8 = dVar8 + (double)DAT_0029f124" identifier = (binary_expression "dVar8 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar8) {\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar8)" ( (binary_expression "(double)DAT_0029f134 <= dVar8" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);\n                          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar8 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar8 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar8 - (double)DAT_0029f134)" identifier (argument_list "(dVar8 - (double)DAT_0029f134)" ( (binary_expression "dVar8 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }" else (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar8);\n                          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar8);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar8)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar8)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar8)" identifier (argument_list "(dVar8)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = (ushort)(local_e4 << 0xf);" (assignment_expression "uVar13 = (ushort)(local_e4 << 0xf)" identifier = (call_expression "(ushort)(local_e4 << 0xf)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xf)" ( (binary_expression "local_e4 << 0xf" identifier << number_literal) )))) ;) }) (else_clause "else {\n                          uVar13 = 0x8000;\n                        }" else (compound_statement "{\n                          uVar13 = 0x8000;\n                        }" { (expression_statement "uVar13 = 0x8000;" (assignment_expression "uVar13 = 0x8000" identifier = number_literal) ;) }))) })) })) (if_statement "if (0.0 < dVar1) {\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar1)" ( (binary_expression "0.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n                      dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }\n                    }" { (expression_statement "dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar1 = (dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar1 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar1 * (double)DAT_002c5ed8)" ( (binary_expression "dVar1 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xfc00;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar1)" ( (binary_expression "(double)DAT_0029f714 <= dVar1" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar13 = 0xfc00;\n                      }" { (expression_statement "uVar13 = 0xfc00;" (assignment_expression "uVar13 = 0xfc00" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }" else (compound_statement "{\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 10);\n                      }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = uVar13 | (ushort)(local_e4 << 10);" (assignment_expression "uVar13 = uVar13 | (ushort)(local_e4 << 10)" identifier = (binary_expression "uVar13 | (ushort)(local_e4 << 10)" identifier | (call_expression "(ushort)(local_e4 << 10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 10)" ( (binary_expression "local_e4 << 10" identifier << number_literal) ))))) ;) }))) })) (if_statement "if (0.0 < pQVar23[pPVar5[1].offset]) {\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[1].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[1].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                      dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }\n                    }" { (expression_statement "dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;" (assignment_expression "dVar1 = (pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8)" ( (binary_expression "pQVar23[pPVar5[1].offset] * (double)DAT_002c5ed8" (subscript_expression "pQVar23[pPVar5[1].offset]" identifier [ (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar1) {\n                        uVar13 = 0xffe0;\n                      }\n                      else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar1)" ( (binary_expression "(double)DAT_0029f714 <= dVar1" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar13 = 0xffe0;\n                      }" { (expression_statement "uVar13 = 0xffe0;" (assignment_expression "uVar13 = 0xffe0" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }" else (compound_statement "{\n                        dVar1 = dVar1 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }\n                        uVar13 = uVar13 | (ushort)(local_e4 << 5);\n                      }" { (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar1);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (expression_statement "uVar13 = uVar13 | (ushort)(local_e4 << 5);" (assignment_expression "uVar13 = uVar13 | (ushort)(local_e4 << 5)" identifier = (binary_expression "uVar13 | (ushort)(local_e4 << 5)" identifier | (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 5)" ( (binary_expression "local_e4 << 5" identifier << number_literal) ))))) ;) }))) })) (if_statement "if (0.0 < pQVar23[pPVar5[2].offset]) {\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }" if (parenthesized_expression "(0.0 < pQVar23[pPVar5[2].offset])" ( (binary_expression "0.0 < pQVar23[pPVar5[2].offset]" number_literal < (subscript_expression "pQVar23[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                      dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;\n                      dVar1 = dVar1 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }\nLAB_001d21be:\n                      uVar13 = uVar13 | uVar32;\n                    }" { (expression_statement "dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710;" (assignment_expression "dVar1 = (pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710" identifier = (binary_expression "(pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8) /\n                              (double)DAT_0029f710" (parenthesized_expression "(pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8)" ( (binary_expression "pQVar23[pPVar5[2].offset] * (double)DAT_002c5ed8" (subscript_expression "pQVar23[pPVar5[2].offset]" identifier [ (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier) ]) * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar1) goto LAB_001d2eba;" if (parenthesized_expression "((double)DAT_0029f714 <= dVar1)" ( (binary_expression "(double)DAT_0029f714 <= dVar1" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_001d2eba;" goto statement_identifier ;)) (expression_statement "dVar1 = dVar1 + (double)DAT_0029f124;" (assignment_expression "dVar1 = dVar1 + (double)DAT_0029f124" identifier = (binary_expression "dVar1 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar1) {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar1)" ( (binary_expression "(double)DAT_0029f134 <= dVar1" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);\n                      }" { (expression_statement "uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134);" (assignment_expression "uVar32 = (ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)DAT_0029f134)" identifier (argument_list "(dVar1 - (double)DAT_0029f134)" ( (binary_expression "dVar1 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }" else (compound_statement "{\n                        uVar32 = (ushort)(longlong)ROUND(dVar1);\n                      }" { (expression_statement "uVar32 = (ushort)(longlong)ROUND(dVar1);" (assignment_expression "uVar32 = (ushort)(longlong)ROUND(dVar1)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar1)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier )))))) ;) }))) (labeled_statement "LAB_001d21be:\n                      uVar13 = uVar13 | uVar32;" statement_identifier : (expression_statement "uVar13 = uVar13 | uVar32;" (assignment_expression "uVar13 = uVar13 | uVar32" identifier = (binary_expression "uVar13 | uVar32" identifier | identifier)) ;)) })) }))) }))) (expression_statement "*puVar25 = uVar13;" (assignment_expression "*puVar25 = uVar13" (pointer_expression "*puVar25" * identifier) = identifier) ;) (expression_statement "pQVar23 = pQVar23 + sVar4;" (assignment_expression "pQVar23 = pQVar23 + sVar4" identifier = (binary_expression "pQVar23 + sVar4" identifier + identifier)) ;) (expression_statement "puVar25 = puVar25 + 1;" (assignment_expression "puVar25 = puVar25 + 1" identifier = (binary_expression "puVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar25 != puVar38)" ( (binary_expression "puVar25 != puVar38" identifier != identifier) )) ;) })) (if_statement "if (uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0) {\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }" if (parenthesized_expression "(uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0)" ( (binary_expression "uVar21 != sVar47 * 2 &&\n                SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0" (binary_expression "uVar21 != sVar47 * 2" identifier != (binary_expression "sVar47 * 2" identifier * number_literal)) && (binary_expression "SBORROW4(uVar21,sVar47 * 2) == (int)(uVar21 + sVar47 * -2) < 0" (call_expression "SBORROW4(uVar21,sVar47 * 2)" identifier (argument_list "(uVar21,sVar47 * 2)" ( identifier , (binary_expression "sVar47 * 2" identifier * number_literal) ))) == (binary_expression "(int)(uVar21 + sVar47 * -2) < 0" (cast_expression "(int)(uVar21 + sVar47 * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar21 + sVar47 * -2)" ( (binary_expression "uVar21 + sVar47 * -2" identifier + (binary_expression "sVar47 * -2" identifier * number_literal)) ))) < number_literal))) )) (compound_statement "{\n              puVar25 = puVar38;\n              do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));\n              uVar18 = image->rows;\n            }" { (expression_statement "puVar25 = puVar38;" (assignment_expression "puVar25 = puVar38" identifier = identifier) ;) (do_statement "do {\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              } while (puVar39 != puVar38 + (uVar20 * 2 - sVar47));" do (compound_statement "{\n                puVar39 = (ushort *)((int)puVar25 + 1);\n                *(char *)puVar25 = '\0';\n                puVar25 = puVar39;\n              }" { (expression_statement "puVar39 = (ushort *)((int)puVar25 + 1);" (assignment_expression "puVar39 = (ushort *)((int)puVar25 + 1)" identifier = (cast_expression "(ushort *)((int)puVar25 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + 1)" ( (binary_expression "(int)puVar25 + 1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)puVar25 = '\0';" (assignment_expression "*(char *)puVar25 = '\0'" (pointer_expression "*(char *)puVar25" * (cast_expression "(char *)puVar25" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar25 = puVar39;" (assignment_expression "puVar25 = puVar39" identifier = identifier) ;) }) while (parenthesized_expression "(puVar39 != puVar38 + (uVar20 * 2 - sVar47))" ( (binary_expression "puVar39 != puVar38 + (uVar20 * 2 - sVar47)" identifier != (binary_expression "puVar38 + (uVar20 * 2 - sVar47)" identifier + (parenthesized_expression "(uVar20 * 2 - sVar47)" ( (binary_expression "uVar20 * 2 - sVar47" (binary_expression "uVar20 * 2" identifier * number_literal) - identifier) )))) )) ;) (expression_statement "uVar18 = image->rows;" (assignment_expression "uVar18 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (if_statement "if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }" if (parenthesized_expression "(image->previous == (_Image *)0x0)" ( (binary_expression "image->previous == (_Image *)0x0" (field_expression "image->previous" identifier -> field_identifier) == (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }" { (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18)" identifier = (call_expression "SetImageProgress(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18)" identifier (argument_list "(image,"Save/Image",CONCAT44(local_100,local_104),\n                                        (ulonglong)uVar18)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT44(local_100,local_104)" identifier (argument_list "(local_100,local_104)" ( identifier , identifier ))) , (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if (MVar14 == MagickFalse) break;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = image->rows;" (assignment_expression "uVar18 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "bVar44 = 0xfffffffe < local_104;" (assignment_expression "bVar44 = 0xfffffffe < local_104" identifier = (binary_expression "0xfffffffe < local_104" number_literal < identifier)) ;) (expression_statement "local_104 = local_104 + 1;" (assignment_expression "local_104 = local_104 + 1" identifier = (binary_expression "local_104 + 1" identifier + number_literal)) ;) (expression_statement "local_100 = local_100 + (uint)bVar44;" (assignment_expression "local_100 = local_100 + (uint)bVar44" identifier = (binary_expression "local_100 + (uint)bVar44" identifier + (cast_expression "(uint)bVar44" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)local_14c < (int)uVar18)" ( (binary_expression "(int)local_14c < (int)uVar18" (cast_expression "(int)local_14c" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "bVar44 = bVar12 != 2;" (assignment_expression "bVar44 = bVar12 != 2" identifier = (binary_expression "bVar12 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x18:\n        uVar18 = 0;\n        local_184 = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "local_184 = 0;" (assignment_expression "local_184 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < (int)image->rows)" ( (binary_expression "0 < (int)image->rows" number_literal < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) (compound_statement "{\n          do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);\n          bVar44 = bVar12 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          } while ((int)uVar18 < (int)uVar20);" do (compound_statement "{\n            pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;\n            sVar47 = image->columns;\n            pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;\n            if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }\n            if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }\n            uVar20 = image->rows;\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }\n            uVar18 = uVar18 + 1;\n            local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);\n          }" { (expression_statement "pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception);" (assignment_expression "pQVar23 = GetVirtualPixels(image,0,uVar18,image->columns,1,exception)" identifier = (call_expression "GetVirtualPixels(image,0,uVar18,image->columns,1,exception)" identifier (argument_list "(image,0,uVar18,image->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (pQVar23 == (Quantum *)0x0) goto LAB_001d1490;" if (parenthesized_expression "(pQVar23 == (Quantum *)0x0)" ( (binary_expression "pQVar23 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21;" (assignment_expression "pcVar16 = local_168 + (~uVar18 + image->rows) * uVar21" identifier = (binary_expression "local_168 + (~uVar18 + image->rows) * uVar21" identifier + (binary_expression "(~uVar18 + image->rows) * uVar21" (parenthesized_expression "(~uVar18 + image->rows)" ( (binary_expression "~uVar18 + image->rows" (unary_expression "~uVar18" ~ identifier) + (field_expression "image->rows" identifier -> field_identifier)) )) * identifier))) ;) (if_statement "if (0 < (int)sVar47) {\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }" if (parenthesized_expression "(0 < (int)sVar47)" ( (binary_expression "0 < (int)sVar47" number_literal < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              iVar15 = 0;\n              pcVar37 = pcVar16;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);\n            }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar37 = pcVar16;" (assignment_expression "pcVar37 = pcVar16" identifier = identifier) ;) (do_statement "do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              } while (iVar15 < (int)sVar47);" do (compound_statement "{\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar37 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16 = pcVar37 + 3;\n                pcVar37[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                iVar15 = iVar15 + 1;\n                pcVar37[2] = cVar30;\n                pQVar23 = pQVar23 + image->number_channels;\n                sVar47 = image->columns;\n                pcVar37 = pcVar16;\n              }" { (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map[2].offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map[2].offset]" number_literal < (subscript_expression "pQVar23[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(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                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "*pcVar37 = cVar30;" (assignment_expression "*pcVar37 = cVar30" (pointer_expression "*pcVar37" * identifier) = identifier) ;) (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map[1].offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map[1].offset]" number_literal < (subscript_expression "pQVar23[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(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                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "pcVar16 = pcVar37 + 3;" (assignment_expression "pcVar16 = pcVar37 + 3" identifier = (binary_expression "pcVar37 + 3" identifier + number_literal)) ;) (expression_statement "pcVar37[1] = cVar30;" (assignment_expression "pcVar37[1] = cVar30" (subscript_expression "pcVar37[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map->offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map->offset]" number_literal < (subscript_expression "pQVar23[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ])) )) (compound_statement "{\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(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                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "pcVar37[2] = cVar30;" (assignment_expression "pcVar37[2] = cVar30" (subscript_expression "pcVar37[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pQVar23 = pQVar23 + image->number_channels;" (assignment_expression "pQVar23 = pQVar23 + image->number_channels" identifier = (binary_expression "pQVar23 + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "sVar47 = image->columns;" (assignment_expression "sVar47 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (expression_statement "pcVar37 = pcVar16;" (assignment_expression "pcVar37 = pcVar16" identifier = identifier) ;) }) while (parenthesized_expression "(iVar15 < (int)sVar47)" ( (binary_expression "iVar15 < (int)sVar47" identifier < (cast_expression "(int)sVar47" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if ((int)(sVar47 * 3) < (int)uVar21) {\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }" if (parenthesized_expression "((int)(sVar47 * 3) < (int)uVar21)" ( (binary_expression "(int)(sVar47 * 3) < (int)uVar21" (cast_expression "(int)(sVar47 * 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar47 * 3)" ( (binary_expression "sVar47 * 3" identifier * number_literal) ))) < (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar37 = pcVar16;\n              do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);\n            }" { (expression_statement "pcVar37 = pcVar16;" (assignment_expression "pcVar37 = pcVar16" identifier = identifier) ;) (do_statement "do {\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              } while (pcVar34 != pcVar16 + uVar21 + sVar47 * -3);" do (compound_statement "{\n                pcVar34 = pcVar37 + 1;\n                *pcVar37 = '\0';\n                pcVar37 = pcVar34;\n              }" { (expression_statement "pcVar34 = pcVar37 + 1;" (assignment_expression "pcVar34 = pcVar37 + 1" identifier = (binary_expression "pcVar37 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar37 = '\0';" (assignment_expression "*pcVar37 = '\0'" (pointer_expression "*pcVar37" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar37 = pcVar34;" (assignment_expression "pcVar37 = pcVar34" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar34 != pcVar16 + uVar21 + sVar47 * -3)" ( (binary_expression "pcVar34 != pcVar16 + uVar21 + sVar47 * -3" identifier != (binary_expression "pcVar16 + uVar21 + sVar47 * -3" (binary_expression "pcVar16 + uVar21" identifier + identifier) + (binary_expression "sVar47 * -3" identifier * number_literal))) )) ;) })) (expression_statement "uVar20 = image->rows;" (assignment_expression "uVar20 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (if_statement "if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }" if (parenthesized_expression "(image->previous == (_Image *)0x0)" ( (binary_expression "image->previous == (_Image *)0x0" (field_expression "image->previous" identifier -> field_identifier) == (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);\n              if (MVar14 == MagickFalse) goto LAB_001d1490;\n              uVar20 = image->rows;\n            }" { (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20)" identifier = (call_expression "SetImageProgress(image,"Save/Image",local_184,(ulonglong)uVar20)" identifier (argument_list "(image,"Save/Image",local_184,(ulonglong)uVar20)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if (MVar14 == MagickFalse) goto LAB_001d1490;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "uVar20 = image->rows;" (assignment_expression "uVar20 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1);" (assignment_expression "local_184 = CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1)" identifier = (call_expression "CONCAT44(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1)" identifier (argument_list "(local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184),\n                                 (uint)local_184 + 1)" ( (binary_expression "local_184._4_4_ + (uint)(0xfffffffe < (uint)local_184)" (field_expression "local_184._4_4_" identifier . field_identifier) + (call_expression "(uint)(0xfffffffe < (uint)local_184)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < (uint)local_184)" ( (binary_expression "0xfffffffe < (uint)local_184" number_literal < (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) , (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((int)uVar18 < (int)uVar20)" ( (binary_expression "(int)uVar18 < (int)uVar20" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "bVar44 = bVar12 != 2;" (assignment_expression "bVar44 = bVar12 != 2" identifier = (binary_expression "bVar12 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }" case number_literal : (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" identifier = number_literal) ;) (expression_statement "iStack_178 = 0;" (assignment_expression "iStack_178 = 0" identifier = number_literal) ;) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (0 < (int)image->rows) {\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }" if (parenthesized_expression "(0 < (int)image->rows)" ( (binary_expression "0 < (int)image->rows" number_literal < (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) )) (compound_statement "{\n          do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);\n        }" { (do_statement "do {\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          } while ((int)(uint)local_184 < (int)uVar18);" do (compound_statement "{\n            pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);\n            if (pQVar23 == (Quantum *)0x0) break;\n            uVar18 = image->rows;\n            if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }\n            if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar15;\n            uStack_17b = (undefined1)((uint)iVar15 >> 8);\n            uStack_17a = (undefined2)((uint)iVar15 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);\n          }" { (expression_statement "pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception);" (assignment_expression "pQVar23 = GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception)" identifier = (call_expression "GetVirtualPixels(image,0,(uint)local_184,image->columns,1,exception)" identifier (argument_list "(image,0,(uint)local_184,image->columns,1,exception)" ( identifier , number_literal , (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (pQVar23 == (Quantum *)0x0) break;" if (parenthesized_expression "(pQVar23 == (Quantum *)0x0)" ( (binary_expression "pQVar23 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = image->rows;" (assignment_expression "uVar18 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (if_statement "if (0 < (int)image->columns) {\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }" if (parenthesized_expression "(0 < (int)image->columns)" ( (binary_expression "0 < (int)image->columns" number_literal < (cast_expression "(int)image->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "image->columns" identifier -> field_identifier))) )) (compound_statement "{\n              iVar15 = 0;\n              pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;\n              do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);\n              uVar18 = image->rows;\n            }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21;" (assignment_expression "pcVar16 = local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21" identifier = (binary_expression "local_168 + ((uVar18 - 1) - (uint)local_184) * uVar21" identifier + (binary_expression "((uVar18 - 1) - (uint)local_184) * uVar21" (parenthesized_expression "((uVar18 - 1) - (uint)local_184)" ( (binary_expression "(uVar18 - 1) - (uint)local_184" (parenthesized_expression "(uVar18 - 1)" ( (binary_expression "uVar18 - 1" identifier - number_literal) )) - (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * identifier))) ;) (do_statement "do {\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              } while (iVar15 < (int)image->columns);" do (compound_statement "{\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar16 = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[1] = cVar30;\n                cVar30 = '\0';\n                if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar16[2] = cVar30;\n                cVar30 = -1;\n                if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar16[3] = cVar30;\n                iVar15 = iVar15 + 1;\n                pQVar23 = pQVar23 + image->number_channels;\n                pcVar16 = pcVar16 + 4;\n              }" { (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map[2].offset]) {\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map[2].offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map[2].offset]" number_literal < (subscript_expression "pQVar23[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                  dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map[2].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map[2].offset]" identifier [ (field_expression "image->channel_map[2].offset" (subscript_expression "image->channel_map[2]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(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                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "*pcVar16 = cVar30;" (assignment_expression "*pcVar16 = cVar30" (pointer_expression "*pcVar16" * identifier) = identifier) ;) (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map[1].offset]) {\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map[1].offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map[1].offset]" number_literal < (subscript_expression "pQVar23[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                  dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map[1].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map[1].offset]" identifier [ (field_expression "image->channel_map[1].offset" (subscript_expression "image->channel_map[1]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(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                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "pcVar16[1] = cVar30;" (assignment_expression "pcVar16[1] = cVar30" (subscript_expression "pcVar16[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map->offset]) {\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map->offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map->offset]" number_literal < (subscript_expression "pQVar23[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ])) )) (compound_statement "{\n                  dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;\n                  cVar30 = -1;\n                  if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map->offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map->offset]" identifier [ (field_expression "image->channel_map->offset" (field_expression "image->channel_map" identifier -> field_identifier) -> field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                    cVar30 = (char)(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                    cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "pcVar16[2] = cVar30;" (assignment_expression "pcVar16[2] = cVar30" (subscript_expression "pcVar16[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) (if_statement "if (image->channel_map[4].traits != UndefinedPixelTrait) {\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }" if (parenthesized_expression "(image->channel_map[4].traits != UndefinedPixelTrait)" ( (binary_expression "image->channel_map[4].traits != UndefinedPixelTrait" (field_expression "image->channel_map[4].traits" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) != identifier) )) (compound_statement "{\n                  cVar30 = '\0';\n                  if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }\n                }" { (expression_statement "cVar30 = '\0';" (assignment_expression "cVar30 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < pQVar23[image->channel_map[4].offset]) {\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }" if (parenthesized_expression "(0.0 < pQVar23[image->channel_map[4].offset])" ( (binary_expression "0.0 < pQVar23[image->channel_map[4].offset]" number_literal < (subscript_expression "pQVar23[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ])) )) (compound_statement "{\n                    dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }\n                  }" { (expression_statement "dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0;" (assignment_expression "dVar1 = pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0" identifier = (binary_expression "pQVar23[image->channel_map[4].offset] / (double)DAT_002a7ff0" (subscript_expression "pQVar23[image->channel_map[4].offset]" identifier [ (field_expression "image->channel_map[4].offset" (subscript_expression "image->channel_map[4]" (field_expression "image->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) ]) / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002a7ff4 <= dVar1) {\n                      cVar30 = -1;\n                    }\n                    else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }" if (parenthesized_expression "((double)DAT_002a7ff4 <= dVar1)" ( (binary_expression "(double)DAT_002a7ff4 <= dVar1" (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      cVar30 = -1;\n                    }" { (expression_statement "cVar30 = -1;" (assignment_expression "cVar30 = -1" identifier = number_literal) ;) }) (else_clause "else {\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }" else (compound_statement "{\n                      cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);\n                    }" { (expression_statement "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "cVar30 = (char)(short)ROUND(dVar1 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar1 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (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 "pcVar16[3] = cVar30;" (assignment_expression "pcVar16[3] = cVar30" (subscript_expression "pcVar16[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "pQVar23 = pQVar23 + image->number_channels;" (assignment_expression "pQVar23 = pQVar23 + image->number_channels" identifier = (binary_expression "pQVar23 + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) ;) (expression_statement "pcVar16 = pcVar16 + 4;" (assignment_expression "pcVar16 = pcVar16 + 4" identifier = (binary_expression "pcVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 < (int)image->columns)" ( (binary_expression "iVar15 < (int)image->columns" identifier < (cast_expression "(int)image->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "image->columns" identifier -> field_identifier))) )) ;) (expression_statement "uVar18 = image->rows;" (assignment_expression "uVar18 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (if_statement "if (image->previous == (_Image *)0x0) {\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }" if (parenthesized_expression "(image->previous == (_Image *)0x0)" ( (binary_expression "image->previous == (_Image *)0x0" (field_expression "image->previous" identifier -> field_identifier) == (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);\n              if (MVar14 == MagickFalse) break;\n              uVar18 = image->rows;\n            }" { (expression_statement "MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18);" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18)" identifier = (call_expression "SetImageProgress(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18)" identifier (argument_list "(image,"Save/Image",\n                                        CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                ),(ulonglong)uVar18)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT44(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                )" identifier (argument_list "(iStack_178,\n                                                 CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))\n                                                )" ( identifier , (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) ))) , (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if (MVar14 == MagickFalse) break;" if (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar18 = image->rows;" (assignment_expression "uVar18 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) })) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "uVar20 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) (expression_statement "iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;" (assignment_expression "iVar15 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" identifier = (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) + number_literal)) ;) (expression_statement "local_17c = (byte)iVar15;" (assignment_expression "local_17c = (byte)iVar15" identifier = (cast_expression "(byte)iVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar15 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar15 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar15 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar15 >> 8)" ( (binary_expression "(uint)iVar15 >> 8" (cast_expression "(uint)iVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar15 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar15 >> 0x10)" ( (binary_expression "(uint)iVar15 >> 0x10" (cast_expression "(uint)iVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20);" (assignment_expression "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar20)" identifier = (binary_expression "iStack_178 + (uint)(0xfffffffe < uVar20)" identifier + (call_expression "(uint)(0xfffffffe < uVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar20)" ( (binary_expression "0xfffffffe < uVar20" number_literal < identifier) ))))) ;) }) while (parenthesized_expression "((int)(uint)local_184 < (int)uVar18)" ( (binary_expression "(int)(uint)local_184 < (int)uVar18" (cast_expression "(int)(uint)local_184" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) })) (labeled_statement "LAB_001d1490:\n      bVar44 = bVar12 != 2;" statement_identifier : (expression_statement "bVar44 = bVar12 != 2;" (assignment_expression "bVar44 = bVar12 != 2" identifier = (binary_expression "bVar12 != 2" identifier != number_literal)) ;)) (labeled_statement "LAB_001d149a:\n      bVar33 = bVar44;" statement_identifier : (expression_statement "bVar33 = bVar44;" (assignment_expression "bVar33 = bVar44" identifier = identifier) ;)) (if_statement "if (image->debug == MagickFalse) {\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }\n      else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" if (parenthesized_expression "(image->debug == MagickFalse)" ( (binary_expression "image->debug == MagickFalse" (field_expression "image->debug" identifier -> field_identifier) == identifier) )) (compound_statement "{\nLAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = local_128 + -0xe;\n        sVar47 = GetStringInfoLength(string_info);\n        local_17c = (byte)sVar47;\n        uStack_17b = (undefined1)(sVar47 >> 8);\n        uStack_17a = (undefined2)(sVar47 >> 0x10);\n        uVar18 = sVar47 & 3;\n        if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }\n        local_128 = local_128 + local_174 + sVar47;\n        bmp_info.file_size = (uint)local_128;\n      }" { (labeled_statement "LAB_001d14a8:\n        if (string_info == (StringInfo *)0x0) goto LAB_001d279e;" statement_identifier : (if_statement "if (string_info == (StringInfo *)0x0) goto LAB_001d279e;" if (parenthesized_expression "(string_info == (StringInfo *)0x0)" ( (binary_expression "string_info == (StringInfo *)0x0" identifier == (cast_expression "(StringInfo *)0x0" ( (type_descriptor "StringInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001d279e;" goto statement_identifier ;))) (labeled_statement "LAB_001d14b4:\n        local_164 = local_128 + -0xe;" statement_identifier : (expression_statement "local_164 = local_128 + -0xe;" (assignment_expression "local_164 = local_128 + -0xe" identifier = (binary_expression "local_128 + -0xe" identifier + number_literal)) ;)) (expression_statement "sVar47 = GetStringInfoLength(string_info);" (assignment_expression "sVar47 = GetStringInfoLength(string_info)" identifier = (call_expression "GetStringInfoLength(string_info)" identifier (argument_list "(string_info)" ( identifier )))) ;) (expression_statement "local_17c = (byte)sVar47;" (assignment_expression "local_17c = (byte)sVar47" identifier = (cast_expression "(byte)sVar47" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(sVar47 >> 8);" (assignment_expression "uStack_17b = (undefined1)(sVar47 >> 8)" identifier = (call_expression "(undefined1)(sVar47 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(sVar47 >> 8)" ( (binary_expression "sVar47 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(sVar47 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(sVar47 >> 0x10)" identifier = (call_expression "(undefined2)(sVar47 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(sVar47 >> 0x10)" ( (binary_expression "sVar47 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar18 = sVar47 & 3;" (assignment_expression "uVar18 = sVar47 & 3" identifier = (binary_expression "sVar47 & 3" identifier & number_literal)) ;) (if_statement "if (uVar18 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n          local_174 = 0;\n          local_170 = 0;\n        }" { (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" identifier = number_literal) ;) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }" else (compound_statement "{\n          local_174 = 4 - uVar18;\n          local_170 = -(uint)(4 < uVar18);\n        }" { (expression_statement "local_174 = 4 - uVar18;" (assignment_expression "local_174 = 4 - uVar18" identifier = (binary_expression "4 - uVar18" number_literal - identifier)) ;) (expression_statement "local_170 = -(uint)(4 < uVar18);" (assignment_expression "local_170 = -(uint)(4 < uVar18)" identifier = (unary_expression "-(uint)(4 < uVar18)" - (call_expression "(uint)(4 < uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(4 < uVar18)" ( (binary_expression "4 < uVar18" number_literal < identifier) ))))) ;) }))) (expression_statement "local_128 = local_128 + local_174 + sVar47;" (assignment_expression "local_128 = local_128 + local_174 + sVar47" identifier = (binary_expression "local_128 + local_174 + sVar47" (binary_expression "local_128 + local_174" identifier + identifier) + identifier)) ;) (expression_statement "bmp_info.file_size = (uint)local_128;" (assignment_expression "bmp_info.file_size = (uint)local_128" (field_expression "bmp_info.file_size" identifier . field_identifier) = (cast_expression "(uint)local_128" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" else (compound_statement "{\nLAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);\n        uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);\n        if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }\n        uVar48 = SUB82((double)image->depth,0);\n        uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);\n        if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }\n        uVar48 = SUB82((double)value,0);\n        uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);\n        if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);\n        if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" { (labeled_statement "LAB_001d2640:\n        uVar48 = SUB82((double)bVar12,0);" statement_identifier : (expression_statement "uVar48 = SUB82((double)bVar12,0);" (assignment_expression "uVar48 = SUB82((double)bVar12,0)" identifier = (call_expression "SUB82((double)bVar12,0)" identifier (argument_list "((double)bVar12,0)" ( (cast_expression "(double)bVar12" ( (type_descriptor "double" primitive_type) ) identifier) , number_literal )))) ;)) (expression_statement "uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20);" (assignment_expression "uVar49 = (undefined4)((ulonglong)(double)bVar12 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)(double)bVar12 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)(double)bVar12 >> 0x20)" ( (binary_expression "(ulonglong)(double)bVar12 >> 0x20" (cast_expression "(ulonglong)(double)bVar12" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)bVar12" ( (type_descriptor "double" primitive_type) ) identifier)) >> number_literal) )))) ;) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Writing BMP version %.20g datastream"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (image->storage_class == DirectClass) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }" if (parenthesized_expression "(image->storage_class == DirectClass)" ( (binary_expression "image->storage_class == DirectClass" (field_expression "image->storage_class" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);\n        }" { (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,\n                         "   Storage class=DirectClass",uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Storage class=DirectClass"" " string_content ") , identifier , identifier ))) ;) }) (else_clause "else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }" else (compound_statement "{\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);\n        }" { (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,\n                         "   Storage class=PseudoClass",uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Storage class=PseudoClass"" " string_content ") , identifier , identifier ))) ;) }))) (expression_statement "uVar48 = SUB82((double)image->depth,0);" (assignment_expression "uVar48 = SUB82((double)image->depth,0)" identifier = (call_expression "SUB82((double)image->depth,0)" identifier (argument_list "((double)image->depth,0)" ( (cast_expression "(double)image->depth" ( (type_descriptor "double" primitive_type) ) (field_expression "image->depth" identifier -> field_identifier)) , number_literal )))) ;) (expression_statement "uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20);" (assignment_expression "uVar49 = (undefined4)((ulonglong)(double)image->depth >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)(double)image->depth >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)(double)image->depth >> 0x20)" ( (binary_expression "(ulonglong)(double)image->depth >> 0x20" (cast_expression "(ulonglong)(double)image->depth" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)image->depth" ( (type_descriptor "double" primitive_type) ) (field_expression "image->depth" identifier -> field_identifier))) >> number_literal) )))) ;) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48\n                       ,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Image depth=%.20g"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (image->alpha_trait == UndefinedPixelTrait) {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }\n        else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }" if (parenthesized_expression "(image->alpha_trait == UndefinedPixelTrait)" ( (binary_expression "image->alpha_trait == UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);\n        }" { (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",\n                         uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Matte=MagickFalse"" " string_content ") , identifier , identifier ))) ;) }) (else_clause "else {\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }" else (compound_statement "{\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);\n        }" { (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,\n                         uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Matte=True"" " string_content ") , identifier , identifier ))) ;) }))) (expression_statement "uVar48 = SUB82((double)value,0);" (assignment_expression "uVar48 = SUB82((double)value,0)" identifier = (call_expression "SUB82((double)value,0)" identifier (argument_list "((double)value,0)" ( (cast_expression "(double)value" ( (type_descriptor "double" primitive_type) ) identifier) , number_literal )))) ;) (expression_statement "uVar49 = (undefined4)((ulonglong)(double)value >> 0x20);" (assignment_expression "uVar49 = (undefined4)((ulonglong)(double)value >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)(double)value >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)(double)value >> 0x20)" ( (binary_expression "(ulonglong)(double)value >> 0x20" (cast_expression "(ulonglong)(double)value" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)value" ( (type_descriptor "double" primitive_type) ) identifier)) >> number_literal) )))) ;) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"\n                       ,uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   BMP bits_per_pixel=%.20g"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (bmp_info.compression == 1) {\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }\n        else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" if (parenthesized_expression "(bmp_info.compression == 1)" ( (binary_expression "bmp_info.compression == 1" (field_expression "bmp_info.compression" identifier . field_identifier) == number_literal) )) (compound_statement "{\n          pcVar16 = "   Compression=BI_RLE8";\n          sVar47 = 0x8ba;\n        }" { (expression_statement "pcVar16 = "   Compression=BI_RLE8";" (assignment_expression "pcVar16 = "   Compression=BI_RLE8"" identifier = (string_literal ""   Compression=BI_RLE8"" " string_content ")) ;) (expression_statement "sVar47 = 0x8ba;" (assignment_expression "sVar47 = 0x8ba" identifier = number_literal) ;) }) (else_clause "else if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" else (if_statement "if (bmp_info.compression == 0) {\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }\n        else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" if (parenthesized_expression "(bmp_info.compression == 0)" ( (binary_expression "bmp_info.compression == 0" (field_expression "bmp_info.compression" identifier . field_identifier) == number_literal) )) (compound_statement "{\n          pcVar16 = "   Compression=BI_RGB";\n          sVar47 = 0x8b4;\n        }" { (expression_statement "pcVar16 = "   Compression=BI_RGB";" (assignment_expression "pcVar16 = "   Compression=BI_RGB"" identifier = (string_literal ""   Compression=BI_RGB"" " string_content ")) ;) (expression_statement "sVar47 = 0x8b4;" (assignment_expression "sVar47 = 0x8b4" identifier = number_literal) ;) }) (else_clause "else if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" else (if_statement "if (bmp_info.compression == 3) {\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }\n        else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" if (parenthesized_expression "(bmp_info.compression == 3)" ( (binary_expression "bmp_info.compression == 3" (field_expression "bmp_info.compression" identifier . field_identifier) == number_literal) )) (compound_statement "{\n          pcVar16 = "   Compression=BI_BITFIELDS";\n          sVar47 = 0x8c0;\n        }" { (expression_statement "pcVar16 = "   Compression=BI_BITFIELDS";" (assignment_expression "pcVar16 = "   Compression=BI_BITFIELDS"" identifier = (string_literal ""   Compression=BI_BITFIELDS"" " string_content ")) ;) (expression_statement "sVar47 = 0x8c0;" (assignment_expression "sVar47 = 0x8c0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" else (compound_statement "{\n          uVar48 = (undefined2)bmp_info.compression;\n          pcVar16 = "   Compression=UNKNOWN (%u)";\n          sVar47 = 0x8c6;\n        }" { (expression_statement "uVar48 = (undefined2)bmp_info.compression;" (assignment_expression "uVar48 = (undefined2)bmp_info.compression" identifier = (cast_expression "(undefined2)bmp_info.compression" ( (type_descriptor "undefined2" type_identifier) ) (field_expression "bmp_info.compression" identifier . field_identifier))) ;) (expression_statement "pcVar16 = "   Compression=UNKNOWN (%u)";" (assignment_expression "pcVar16 = "   Compression=UNKNOWN (%u)"" identifier = (string_literal ""   Compression=UNKNOWN (%u)"" " string_content ")) ;) (expression_statement "sVar47 = 0x8c6;" (assignment_expression "sVar47 = 0x8c6" identifier = number_literal) ;) }))))))) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_144 == 0) {\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }\n        else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }" if (parenthesized_expression "(local_144 == 0)" ( (binary_expression "local_144 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar16 = "   Number_colors=unspecified";\n          sVar47 = 0x8cc;\n        }" { (expression_statement "pcVar16 = "   Number_colors=unspecified";" (assignment_expression "pcVar16 = "   Number_colors=unspecified"" identifier = (string_literal ""   Number_colors=unspecified"" " string_content ")) ;) (expression_statement "sVar47 = 0x8cc;" (assignment_expression "sVar47 = 0x8cc" identifier = number_literal) ;) }) (else_clause "else {\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }" else (compound_statement "{\n          pcVar16 = "   Number_colors=%u";\n          uVar48 = (undefined2)local_144;\n          sVar47 = 0x8cf;\n        }" { (expression_statement "pcVar16 = "   Number_colors=%u";" (assignment_expression "pcVar16 = "   Number_colors=%u"" identifier = (string_literal ""   Number_colors=%u"" " string_content ")) ;) (expression_statement "uVar48 = (undefined2)local_144;" (assignment_expression "uVar48 = (undefined2)local_144" identifier = (cast_expression "(undefined2)local_144" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "sVar47 = 0x8cf;" (assignment_expression "sVar47 = 0x8cf" identifier = number_literal) ;) }))) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",sVar47,pcVar16,uVar48,uVar49)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (string_info != (StringInfo *)0x0) goto LAB_001d14b4;" if (parenthesized_expression "(string_info != (StringInfo *)0x0)" ( (binary_expression "string_info != (StringInfo *)0x0" identifier != (cast_expression "(StringInfo *)0x0" ( (type_descriptor "StringInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001d14b4;" goto statement_identifier ;)) (labeled_statement "LAB_001d279e:\n        local_174 = 0;" statement_identifier : (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" identifier = number_literal) ;)) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" identifier = number_literal) ;) (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "WriteBlob(image,2,&DAT_002a251a);" (call_expression "WriteBlob(image,2,&DAT_002a251a)" identifier (argument_list "(image,2,&DAT_002a251a)" ( identifier , number_literal , (pointer_expression "&DAT_002a251a" & identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,(uint)local_128);" (call_expression "WriteBlobLSBLong(image,(uint)local_128)" identifier (argument_list "(image,(uint)local_128)" ( identifier , (cast_expression "(uint)local_128" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,0);" (call_expression "WriteBlobLSBLong(image,0)" identifier (argument_list "(image,0)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.offset_bits);" (call_expression "WriteBlobLSBLong(image,bmp_info.offset_bits)" identifier (argument_list "(image,bmp_info.offset_bits)" ( identifier , (field_expression "bmp_info.offset_bits" identifier . field_identifier) ))) ;) (if_statement "if (bVar12 == 2) {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }\n      else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }" if (parenthesized_expression "(bVar12 == 2)" ( (binary_expression "bVar12 == 2" identifier == number_literal) )) (compound_statement "{\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedShort(image,(short)sVar28);\n        WriteBlobLSBSignedShort(image,(short)sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }" { (expression_statement "WriteBlobLSBLong(image,bmp_info.size);" (call_expression "WriteBlobLSBLong(image,bmp_info.size)" identifier (argument_list "(image,bmp_info.size)" ( identifier , (field_expression "bmp_info.size" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBSignedShort(image,(short)sVar28);" (call_expression "WriteBlobLSBSignedShort(image,(short)sVar28)" identifier (argument_list "(image,(short)sVar28)" ( identifier , (cast_expression "(short)sVar28" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) ))) ;) (expression_statement "WriteBlobLSBSignedShort(image,(short)sVar35);" (call_expression "WriteBlobLSBSignedShort(image,(short)sVar35)" identifier (argument_list "(image,(short)sVar35)" ( identifier , (cast_expression "(short)sVar35" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) ))) ;) (expression_statement "WriteBlobLSBShort(image,1);" (call_expression "WriteBlobLSBShort(image,1)" identifier (argument_list "(image,1)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBShort(image,value);" (call_expression "WriteBlobLSBShort(image,value)" identifier (argument_list "(image,value)" ( identifier , identifier ))) ;) (expression_statement "CVar19 = image->storage_class;" (assignment_expression "CVar19 = image->storage_class" identifier = (field_expression "image->storage_class" identifier -> field_identifier)) ;) (expression_statement "MVar14 = image->debug;" (assignment_expression "MVar14 = image->debug" identifier = (field_expression "image->debug" identifier -> field_identifier)) ;) }) (else_clause "else {\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }" else (compound_statement "{\n        WriteBlobLSBLong(image,bmp_info.size);\n        WriteBlobLSBSignedLong(image,sVar28);\n        WriteBlobLSBSignedLong(image,sVar35);\n        WriteBlobLSBShort(image,1);\n        WriteBlobLSBShort(image,value);\n        WriteBlobLSBLong(image,bmp_info.compression);\n        WriteBlobLSBLong(image,bmp_info.image_size);\n        WriteBlobLSBLong(image,bmp_info.x_pixels);\n        WriteBlobLSBLong(image,bmp_info.y_pixels);\n        WriteBlobLSBLong(image,local_144);\n        WriteBlobLSBLong(image,local_144);\n        if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }\n        CVar19 = image->storage_class;\n        MVar14 = image->debug;\n      }" { (expression_statement "WriteBlobLSBLong(image,bmp_info.size);" (call_expression "WriteBlobLSBLong(image,bmp_info.size)" identifier (argument_list "(image,bmp_info.size)" ( identifier , (field_expression "bmp_info.size" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBSignedLong(image,sVar28);" (call_expression "WriteBlobLSBSignedLong(image,sVar28)" identifier (argument_list "(image,sVar28)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBSignedLong(image,sVar35);" (call_expression "WriteBlobLSBSignedLong(image,sVar35)" identifier (argument_list "(image,sVar35)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBShort(image,1);" (call_expression "WriteBlobLSBShort(image,1)" identifier (argument_list "(image,1)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBShort(image,value);" (call_expression "WriteBlobLSBShort(image,value)" identifier (argument_list "(image,value)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.compression);" (call_expression "WriteBlobLSBLong(image,bmp_info.compression)" identifier (argument_list "(image,bmp_info.compression)" ( identifier , (field_expression "bmp_info.compression" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.image_size);" (call_expression "WriteBlobLSBLong(image,bmp_info.image_size)" identifier (argument_list "(image,bmp_info.image_size)" ( identifier , (field_expression "bmp_info.image_size" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.x_pixels);" (call_expression "WriteBlobLSBLong(image,bmp_info.x_pixels)" identifier (argument_list "(image,bmp_info.x_pixels)" ( identifier , (field_expression "bmp_info.x_pixels" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.y_pixels);" (call_expression "WriteBlobLSBLong(image,bmp_info.y_pixels)" identifier (argument_list "(image,bmp_info.y_pixels)" ( identifier , (field_expression "bmp_info.y_pixels" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,local_144);" (call_expression "WriteBlobLSBLong(image,local_144)" identifier (argument_list "(image,local_144)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(image,local_144);" (call_expression "WriteBlobLSBLong(image,local_144)" identifier (argument_list "(image,local_144)" ( identifier , identifier ))) ;) (if_statement "if ((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)) {\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }" if (parenthesized_expression "((bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait))" ( (binary_expression "(bVar12 == 4) && (bVar7 || image->alpha_trait != UndefinedPixelTrait)" (parenthesized_expression "(bVar12 == 4)" ( (binary_expression "bVar12 == 4" identifier == number_literal) )) && (parenthesized_expression "(bVar7 || image->alpha_trait != UndefinedPixelTrait)" ( (binary_expression "bVar7 || image->alpha_trait != UndefinedPixelTrait" identifier || (binary_expression "image->alpha_trait != UndefinedPixelTrait" (field_expression "image->alpha_trait" identifier -> field_identifier) != identifier)) ))) )) (compound_statement "{\n          WriteBlobLSBLong(image,bmp_info.red_mask);\n          WriteBlobLSBLong(image,bmp_info.green_mask);\n          WriteBlobLSBLong(image,bmp_info.blue_mask);\n          WriteBlobLSBLong(image,bmp_info.alpha_mask);\n          if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }\n          dVar1 = (image->chromaticity).red_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }\n          dVar1 = (image->chromaticity).red_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).green_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.x;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }\n          dVar1 = (image->chromaticity).blue_primary.y;\n          if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }\n          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }\n          dVar1 = bmp_info.gamma_scale.x;\n          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }\n          dVar8 = bmp_info.gamma_scale.y;\n          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }\n          dVar10 = bmp_info.gamma_scale.z;\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          dVar2 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);\n          WriteBlobLSBLong(image,local_e4);\n          if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }\n        }" { (expression_statement "WriteBlobLSBLong(image,bmp_info.red_mask);" (call_expression "WriteBlobLSBLong(image,bmp_info.red_mask)" identifier (argument_list "(image,bmp_info.red_mask)" ( identifier , (field_expression "bmp_info.red_mask" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.green_mask);" (call_expression "WriteBlobLSBLong(image,bmp_info.green_mask)" identifier (argument_list "(image,bmp_info.green_mask)" ( identifier , (field_expression "bmp_info.green_mask" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.blue_mask);" (call_expression "WriteBlobLSBLong(image,bmp_info.blue_mask)" identifier (argument_list "(image,bmp_info.blue_mask)" ( identifier , (field_expression "bmp_info.blue_mask" identifier . field_identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,bmp_info.alpha_mask);" (call_expression "WriteBlobLSBLong(image,bmp_info.alpha_mask)" identifier (argument_list "(image,bmp_info.alpha_mask)" ( identifier , (field_expression "bmp_info.alpha_mask" identifier . field_identifier) ))) ;) (if_statement "if (string_info == (StringInfo *)0x0) {\n            WriteBlobLSBLong(image,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }" if (parenthesized_expression "(string_info == (StringInfo *)0x0)" ( (binary_expression "string_info == (StringInfo *)0x0" identifier == (cast_expression "(StringInfo *)0x0" ( (type_descriptor "StringInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            WriteBlobLSBLong(image,0x73524742);\n          }" { (expression_statement "WriteBlobLSBLong(image,0x73524742);" (call_expression "WriteBlobLSBLong(image,0x73524742)" identifier (argument_list "(image,0x73524742)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n            WriteBlobLSBLong(image,0x4d424544);\n          }" else (compound_statement "{\n            WriteBlobLSBLong(image,0x4d424544);\n          }" { (expression_statement "WriteBlobLSBLong(image,0x4d424544);" (call_expression "WriteBlobLSBLong(image,0x4d424544)" identifier (argument_list "(image,0x4d424544)" ( identifier , number_literal ))) ;) }))) (expression_statement "dVar1 = (image->chromaticity).red_primary.x;" (assignment_expression "dVar1 = (image->chromaticity).red_primary.x" identifier = (field_expression "(image->chromaticity).red_primary.x" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }" if (parenthesized_expression "((1.0 < dVar1) || (dVar1 <= 0.0))" ( (binary_expression "(1.0 < dVar1) || (dVar1 <= 0.0)" (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) || (parenthesized_expression "(dVar1 <= 0.0)" ( (binary_expression "dVar1 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_e4 = 0;\n            (image->chromaticity).red_primary.x = 0.0;\n          }" { (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "(image->chromaticity).red_primary.x = 0.0;" (assignment_expression "(image->chromaticity).red_primary.x = 0.0" (field_expression "(image->chromaticity).red_primary.x" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) }) (else_clause "else {\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }" else (compound_statement "{\n            local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);\n          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * (double)DAT_002cc820)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * (double)DAT_002cc820)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * (double)DAT_002cc820)" identifier (argument_list "(dVar1 * (double)DAT_002cc820)" ( (binary_expression "dVar1 * (double)DAT_002cc820" identifier * (cast_expression "(double)DAT_002cc820" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) (expression_statement "dVar1 = (image->chromaticity).red_primary.y;" (assignment_expression "dVar1 = (image->chromaticity).red_primary.y" identifier = (field_expression "(image->chromaticity).red_primary.y" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).red_primary.y = 0.0;\n          }" if (parenthesized_expression "((1.0 < dVar1) || (dVar1 <= 0.0))" ( (binary_expression "(1.0 < dVar1) || (dVar1 <= 0.0)" (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) || (parenthesized_expression "(dVar1 <= 0.0)" ( (binary_expression "dVar1 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            (image->chromaticity).red_primary.y = 0.0;\n          }" { (expression_statement "(image->chromaticity).red_primary.y = 0.0;" (assignment_expression "(image->chromaticity).red_primary.y = 0.0" (field_expression "(image->chromaticity).red_primary.y" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar1 = (image->chromaticity).green_primary.x;" (assignment_expression "dVar1 = (image->chromaticity).green_primary.x" identifier = (field_expression "(image->chromaticity).green_primary.x" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.x = 0.0;\n          }" if (parenthesized_expression "((1.0 < dVar1) || (dVar1 <= 0.0))" ( (binary_expression "(1.0 < dVar1) || (dVar1 <= 0.0)" (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) || (parenthesized_expression "(dVar1 <= 0.0)" ( (binary_expression "dVar1 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            (image->chromaticity).green_primary.x = 0.0;\n          }" { (expression_statement "(image->chromaticity).green_primary.x = 0.0;" (assignment_expression "(image->chromaticity).green_primary.x = 0.0" (field_expression "(image->chromaticity).green_primary.x" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar1 = (image->chromaticity).green_primary.y;" (assignment_expression "dVar1 = (image->chromaticity).green_primary.y" identifier = (field_expression "(image->chromaticity).green_primary.y" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).green_primary.y = 0.0;\n          }" if (parenthesized_expression "((1.0 < dVar1) || (dVar1 <= 0.0))" ( (binary_expression "(1.0 < dVar1) || (dVar1 <= 0.0)" (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) || (parenthesized_expression "(dVar1 <= 0.0)" ( (binary_expression "dVar1 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            (image->chromaticity).green_primary.y = 0.0;\n          }" { (expression_statement "(image->chromaticity).green_primary.y = 0.0;" (assignment_expression "(image->chromaticity).green_primary.y = 0.0" (field_expression "(image->chromaticity).green_primary.y" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar1 = (image->chromaticity).blue_primary.x;" (assignment_expression "dVar1 = (image->chromaticity).blue_primary.x" identifier = (field_expression "(image->chromaticity).blue_primary.x" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.x = 0.0;\n          }" if (parenthesized_expression "((1.0 < dVar1) || (dVar1 <= 0.0))" ( (binary_expression "(1.0 < dVar1) || (dVar1 <= 0.0)" (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) || (parenthesized_expression "(dVar1 <= 0.0)" ( (binary_expression "dVar1 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            (image->chromaticity).blue_primary.x = 0.0;\n          }" { (expression_statement "(image->chromaticity).blue_primary.x = 0.0;" (assignment_expression "(image->chromaticity).blue_primary.x = 0.0" (field_expression "(image->chromaticity).blue_primary.x" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar1 = (image->chromaticity).blue_primary.y;" (assignment_expression "dVar1 = (image->chromaticity).blue_primary.y" identifier = (field_expression "(image->chromaticity).blue_primary.y" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < dVar1) || (dVar1 <= 0.0)) {\n            (image->chromaticity).blue_primary.y = 0.0;\n          }" if (parenthesized_expression "((1.0 < dVar1) || (dVar1 <= 0.0))" ( (binary_expression "(1.0 < dVar1) || (dVar1 <= 0.0)" (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) || (parenthesized_expression "(dVar1 <= 0.0)" ( (binary_expression "dVar1 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            (image->chromaticity).blue_primary.y = 0.0;\n          }" { (expression_statement "(image->chromaticity).blue_primary.y = 0.0;" (assignment_expression "(image->chromaticity).blue_primary.y = 0.0" (field_expression "(image->chromaticity).blue_primary.y" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) })) (if_statement "if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {\n            bmp_info.gamma_scale.x = 0.0;\n          }" if (parenthesized_expression "((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0))" ( (binary_expression "(1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)" (parenthesized_expression "(1.0 < bmp_info.gamma_scale.x)" ( (binary_expression "1.0 < bmp_info.gamma_scale.x" number_literal < (field_expression "bmp_info.gamma_scale.x" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier)) )) || (parenthesized_expression "(bmp_info.gamma_scale.x <= 0.0)" ( (binary_expression "bmp_info.gamma_scale.x <= 0.0" (field_expression "bmp_info.gamma_scale.x" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier) <= number_literal) ))) )) (compound_statement "{\n            bmp_info.gamma_scale.x = 0.0;\n          }" { (expression_statement "bmp_info.gamma_scale.x = 0.0;" (assignment_expression "bmp_info.gamma_scale.x = 0.0" (field_expression "bmp_info.gamma_scale.x" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar1 = bmp_info.gamma_scale.x;" (assignment_expression "dVar1 = bmp_info.gamma_scale.x" identifier = (field_expression "bmp_info.gamma_scale.x" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {\n            bmp_info.gamma_scale.y = 0.0;\n          }" if (parenthesized_expression "((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0))" ( (binary_expression "(1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)" (parenthesized_expression "(1.0 < bmp_info.gamma_scale.y)" ( (binary_expression "1.0 < bmp_info.gamma_scale.y" number_literal < (field_expression "bmp_info.gamma_scale.y" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier)) )) || (parenthesized_expression "(bmp_info.gamma_scale.y <= 0.0)" ( (binary_expression "bmp_info.gamma_scale.y <= 0.0" (field_expression "bmp_info.gamma_scale.y" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier) <= number_literal) ))) )) (compound_statement "{\n            bmp_info.gamma_scale.y = 0.0;\n          }" { (expression_statement "bmp_info.gamma_scale.y = 0.0;" (assignment_expression "bmp_info.gamma_scale.y = 0.0" (field_expression "bmp_info.gamma_scale.y" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar8 = bmp_info.gamma_scale.y;" (assignment_expression "dVar8 = bmp_info.gamma_scale.y" identifier = (field_expression "bmp_info.gamma_scale.y" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier)) ;) (if_statement "if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {\n            bmp_info.gamma_scale.z = 0.0;\n          }" if (parenthesized_expression "((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0))" ( (binary_expression "(1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)" (parenthesized_expression "(1.0 < bmp_info.gamma_scale.z)" ( (binary_expression "1.0 < bmp_info.gamma_scale.z" number_literal < (field_expression "bmp_info.gamma_scale.z" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier)) )) || (parenthesized_expression "(bmp_info.gamma_scale.z <= 0.0)" ( (binary_expression "bmp_info.gamma_scale.z <= 0.0" (field_expression "bmp_info.gamma_scale.z" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier) <= number_literal) ))) )) (compound_statement "{\n            bmp_info.gamma_scale.z = 0.0;\n          }" { (expression_statement "bmp_info.gamma_scale.z = 0.0;" (assignment_expression "bmp_info.gamma_scale.z = 0.0" (field_expression "bmp_info.gamma_scale.z" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "dVar10 = bmp_info.gamma_scale.z;" (assignment_expression "dVar10 = bmp_info.gamma_scale.z" identifier = (field_expression "bmp_info.gamma_scale.z" (field_expression "bmp_info.gamma_scale" identifier . field_identifier) . field_identifier)) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "dVar2 = (double)DAT_002cc820;" (assignment_expression "dVar2 = (double)DAT_002cc820" identifier = (cast_expression "(double)DAT_002cc820" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)(image->chromaticity).red_primary.y * DAT_002cc820)" identifier (argument_list "((float)(image->chromaticity).red_primary.y * DAT_002cc820)" ( (binary_expression "(float)(image->chromaticity).red_primary.y * DAT_002cc820" (cast_expression "(float)(image->chromaticity).red_primary.y" ( (type_descriptor "float" primitive_type) ) (field_expression "(image->chromaticity).red_primary.y" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2)" identifier (argument_list "((1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2)" ( (binary_expression "(1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)) * dVar2" (parenthesized_expression "(1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y))" ( (binary_expression "1.0 - ((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)" number_literal - (parenthesized_expression "((image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y)" ( (binary_expression "(image->chromaticity).red_primary.x +\n                                        (image->chromaticity).red_primary.y" (field_expression "(image->chromaticity).red_primary.x" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (field_expression "(image->chromaticity).red_primary.y" (field_expression "(image->chromaticity).red_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.x)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 * (image->chromaticity).green_primary.x)" identifier (argument_list "(dVar2 * (image->chromaticity).green_primary.x)" ( (binary_expression "dVar2 * (image->chromaticity).green_primary.x" identifier * (field_expression "(image->chromaticity).green_primary.x" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 * (image->chromaticity).green_primary.y)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 * (image->chromaticity).green_primary.y)" identifier (argument_list "(dVar2 * (image->chromaticity).green_primary.y)" ( (binary_expression "dVar2 * (image->chromaticity).green_primary.y" identifier * (field_expression "(image->chromaticity).green_primary.y" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2)" identifier (argument_list "((1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2)" ( (binary_expression "(1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)) * dVar2" (parenthesized_expression "(1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y))" ( (binary_expression "1.0 - ((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)" number_literal - (parenthesized_expression "((image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y)" ( (binary_expression "(image->chromaticity).green_primary.x +\n                                        (image->chromaticity).green_primary.y" (field_expression "(image->chromaticity).green_primary.x" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (field_expression "(image->chromaticity).green_primary.y" (field_expression "(image->chromaticity).green_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.x)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 * (image->chromaticity).blue_primary.x)" identifier (argument_list "(dVar2 * (image->chromaticity).blue_primary.x)" ( (binary_expression "dVar2 * (image->chromaticity).blue_primary.x" identifier * (field_expression "(image->chromaticity).blue_primary.x" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 * (image->chromaticity).blue_primary.y)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 * (image->chromaticity).blue_primary.y)" identifier (argument_list "(dVar2 * (image->chromaticity).blue_primary.y)" ( (binary_expression "dVar2 * (image->chromaticity).blue_primary.y" identifier * (field_expression "(image->chromaticity).blue_primary.y" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2)" identifier (argument_list "((1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2)" ( (binary_expression "(1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)) * dVar2" (parenthesized_expression "(1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y))" ( (binary_expression "1.0 - ((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)" number_literal - (parenthesized_expression "((image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y)" ( (binary_expression "(image->chromaticity).blue_primary.x +\n                                        (image->chromaticity).blue_primary.y" (field_expression "(image->chromaticity).blue_primary.x" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (field_expression "(image->chromaticity).blue_primary.y" (field_expression "(image->chromaticity).blue_primary" (parenthesized_expression "(image->chromaticity)" ( (field_expression "image->chromaticity" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "dVar2 = (double)DAT_002b2420;" (assignment_expression "dVar2 = (double)DAT_002b2420" identifier = (cast_expression "(double)DAT_002b2420" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)dVar1 * DAT_002b2420)" identifier = (cast_expression "(uint)(longlong)ROUND((float)dVar1 * DAT_002b2420)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)dVar1 * DAT_002b2420)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)dVar1 * DAT_002b2420)" identifier (argument_list "((float)dVar1 * DAT_002b2420)" ( (binary_expression "(float)dVar1 * DAT_002b2420" (cast_expression "(float)dVar1" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar8 * dVar2)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar8 * dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar8 * dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar8 * dVar2)" identifier (argument_list "(dVar8 * dVar2)" ( (binary_expression "dVar8 * dVar2" identifier * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar10 * dVar2)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar10 * dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar10 * dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar10 * dVar2)" identifier (argument_list "(dVar10 * dVar2)" ( (binary_expression "dVar10 * dVar2" identifier * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(image,local_e4);" (call_expression "WriteBlobLSBLong(image,local_e4)" identifier (argument_list "(image,local_e4)" ( identifier , identifier ))) ;) (if_statement "if ((image->rendering_intent != UndefinedIntent) || (bVar43)) {\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }" if (parenthesized_expression "((image->rendering_intent != UndefinedIntent) || (bVar43))" ( (binary_expression "(image->rendering_intent != UndefinedIntent) || (bVar43)" (parenthesized_expression "(image->rendering_intent != UndefinedIntent)" ( (binary_expression "image->rendering_intent != UndefinedIntent" (field_expression "image->rendering_intent" identifier -> field_identifier) != identifier) )) || (parenthesized_expression "(bVar43)" ( identifier ))) )) (compound_statement "{\n            uVar20 = image->rendering_intent - SaturationIntent;\n            uVar18 = 0;\n            if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }\n            WriteBlobLSBLong(image,uVar18);\n            WriteBlobLSBLong(image,(uint)local_164);\n            WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);\n            WriteBlobLSBLong(image,0);\n          }" { (expression_statement "uVar20 = image->rendering_intent - SaturationIntent;" (assignment_expression "uVar20 = image->rendering_intent - SaturationIntent" identifier = (binary_expression "image->rendering_intent - SaturationIntent" (field_expression "image->rendering_intent" identifier -> field_identifier) - identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (if_statement "if (uVar20 < 4) {\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }" if (parenthesized_expression "(uVar20 < 4)" ( (binary_expression "uVar20 < 4" identifier < number_literal) )) (compound_statement "{\n              uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);\n            }" { (expression_statement "uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4);" (assignment_expression "uVar18 = *(uint *)(CSWTCH_483 + uVar20 * 4)" identifier = (pointer_expression "*(uint *)(CSWTCH_483 + uVar20 * 4)" * (cast_expression "(uint *)(CSWTCH_483 + uVar20 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_483 + uVar20 * 4)" ( (binary_expression "CSWTCH_483 + uVar20 * 4" identifier + (binary_expression "uVar20 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "WriteBlobLSBLong(image,uVar18);" (call_expression "WriteBlobLSBLong(image,uVar18)" identifier (argument_list "(image,uVar18)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(image,(uint)local_164);" (call_expression "WriteBlobLSBLong(image,(uint)local_164)" identifier (argument_list "(image,(uint)local_164)" ( identifier , (cast_expression "(uint)local_164" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174);" (call_expression "WriteBlobLSBLong(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174)" identifier (argument_list "(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174)" ( identifier , (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) + identifier) ))) ;) (expression_statement "WriteBlobLSBLong(image,0);" (call_expression "WriteBlobLSBLong(image,0)" identifier (argument_list "(image,0)" ( identifier , number_literal ))) ;) })) })) (expression_statement "CVar19 = image->storage_class;" (assignment_expression "CVar19 = image->storage_class" identifier = (field_expression "image->storage_class" identifier -> field_identifier)) ;) (expression_statement "MVar14 = image->debug;" (assignment_expression "MVar14 = image->debug" identifier = (field_expression "image->debug" identifier -> field_identifier)) ;) }))) (if_statement "if (CVar19 == PseudoClass) {\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }" if (parenthesized_expression "(CVar19 == PseudoClass)" ( (binary_expression "CVar19 == PseudoClass" identifier == identifier) )) (compound_statement "{\n        if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }\n        bVar31 = (byte)bmp_info.bits_per_pixel;\n        sVar28 = 1 << (bVar31 & 0x1f);\n        data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);\n        if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }\n        uVar18 = bmp_info.number_colors;\n        if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }\n        puVar29 = data_00;\n        if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }\n        if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }\nLAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }\n        WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);\n        RelinquishMagickMemory(data_00);\n        MVar14 = image->debug;\n      }" { (if_statement "if (MVar14 != MagickFalse) {\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }" if (parenthesized_expression "(MVar14 != MagickFalse)" ( (binary_expression "MVar14 != MagickFalse" identifier != identifier) )) (compound_statement "{\n          local_184 = (ulonglong)image->colors;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));\n        }" { (expression_statement "local_184 = (ulonglong)image->colors;" (assignment_expression "local_184 = (ulonglong)image->colors" identifier = (cast_expression "(ulonglong)image->colors" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "image->colors" identifier -> field_identifier))) ;) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20));" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20))" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"\n                         ,SUB82((double)local_184,0),(int)((ulonglong)(double)local_184 >> 0x20))" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Colormap: %.20g entries"" " string_content ") , (call_expression "SUB82((double)local_184,0)" identifier (argument_list "((double)local_184,0)" ( (cast_expression "(double)local_184" ( (type_descriptor "double" primitive_type) ) identifier) , number_literal ))) , (cast_expression "(int)((ulonglong)(double)local_184 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(double)local_184 >> 0x20)" ( (binary_expression "(ulonglong)(double)local_184 >> 0x20" (cast_expression "(ulonglong)(double)local_184" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)local_184" ( (type_descriptor "double" primitive_type) ) identifier)) >> number_literal) ))) ))) ;) })) (expression_statement "bVar31 = (byte)bmp_info.bits_per_pixel;" (assignment_expression "bVar31 = (byte)bmp_info.bits_per_pixel" identifier = (cast_expression "(byte)bmp_info.bits_per_pixel" ( (type_descriptor "byte" type_identifier) ) (field_expression "bmp_info.bits_per_pixel" identifier . field_identifier))) ;) (expression_statement "sVar28 = 1 << (bVar31 & 0x1f);" (assignment_expression "sVar28 = 1 << (bVar31 & 0x1f)" identifier = (binary_expression "1 << (bVar31 & 0x1f)" number_literal << (parenthesized_expression "(bVar31 & 0x1f)" ( (binary_expression "bVar31 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4);" (assignment_expression "data_00 = (undefined2 *)AcquireQuantumMemory(sVar28,4)" identifier = (cast_expression "(undefined2 *)AcquireQuantumMemory(sVar28,4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(sVar28,4)" identifier (argument_list "(sVar28,4)" ( identifier , number_literal ))))) ;) (if_statement "if (data_00 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }" if (parenthesized_expression "(data_00 == (undefined2 *)0x0)" ( (binary_expression "data_00 == (undefined2 *)0x0" identifier == (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);\n          p_Var6 = (_Image *)image_info->adjoin;\n          while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }\nLAB_001d3a2a:\n          CloseBlob(pIVar24);\n          MVar14 = MagickFalse;\n          goto LAB_001d3a3a;\n        }" { (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename);" (call_expression "ThrowMagickException\n                    (exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename)" identifier (argument_list "(exception,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,\n                     "MemoryAllocationFailed","`%s\'",image->filename)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , identifier , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (field_expression "image->filename" identifier -> field_identifier) ))) ;) (expression_statement "p_Var6 = (_Image *)image_info->adjoin;" (assignment_expression "p_Var6 = (_Image *)image_info->adjoin" identifier = (cast_expression "(_Image *)image_info->adjoin" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "image_info->adjoin" identifier -> field_identifier))) ;) (while_statement "while (pIVar9 = image, p_Var6 != (_Image *)0x0) {\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }" while (parenthesized_expression "(pIVar9 = image, p_Var6 != (_Image *)0x0)" ( (comma_expression "pIVar9 = image, p_Var6 != (_Image *)0x0" (assignment_expression "pIVar9 = image" identifier = identifier) , (binary_expression "p_Var6 != (_Image *)0x0" identifier != (cast_expression "(_Image *)0x0" ( (type_descriptor "_Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n            p_Var6 = pIVar9->previous;\n            image = p_Var6;\n            pIVar24 = pIVar9;\n          }" { (expression_statement "p_Var6 = pIVar9->previous;" (assignment_expression "p_Var6 = pIVar9->previous" identifier = (field_expression "pIVar9->previous" identifier -> field_identifier)) ;) (expression_statement "image = p_Var6;" (assignment_expression "image = p_Var6" identifier = identifier) ;) (expression_statement "pIVar24 = pIVar9;" (assignment_expression "pIVar24 = pIVar9" identifier = identifier) ;) })) (labeled_statement "LAB_001d3a2a:\n          CloseBlob(pIVar24);" statement_identifier : (expression_statement "CloseBlob(pIVar24);" (call_expression "CloseBlob(pIVar24)" identifier (argument_list "(pIVar24)" ( identifier ))) ;)) (expression_statement "MVar14 = MagickFalse;" (assignment_expression "MVar14 = MagickFalse" identifier = identifier) ;) (goto_statement "goto LAB_001d3a3a;" goto statement_identifier ;) })) (expression_statement "uVar18 = bmp_info.number_colors;" (assignment_expression "uVar18 = bmp_info.number_colors" identifier = (field_expression "bmp_info.number_colors" identifier . field_identifier)) ;) (if_statement "if ((int)image->colors <= (int)bmp_info.number_colors) {\n          uVar18 = image->colors;\n        }" if (parenthesized_expression "((int)image->colors <= (int)bmp_info.number_colors)" ( (binary_expression "(int)image->colors <= (int)bmp_info.number_colors" (cast_expression "(int)image->colors" ( (type_descriptor "int" primitive_type) ) (field_expression "image->colors" identifier -> field_identifier)) <= (cast_expression "(int)bmp_info.number_colors" ( (type_descriptor "int" primitive_type) ) (field_expression "bmp_info.number_colors" identifier . field_identifier))) )) (compound_statement "{\n          uVar18 = image->colors;\n        }" { (expression_statement "uVar18 = image->colors;" (assignment_expression "uVar18 = image->colors" identifier = (field_expression "image->colors" identifier -> field_identifier)) ;) })) (expression_statement "puVar29 = data_00;" (assignment_expression "puVar29 = data_00" identifier = identifier) ;) (if_statement "if ((int)uVar18 < 1) {\n          sVar35 = 0;\n        }\n        else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }" if (parenthesized_expression "((int)uVar18 < 1)" ( (binary_expression "(int)uVar18 < 1" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          sVar35 = 0;\n        }" { (expression_statement "sVar35 = 0;" (assignment_expression "sVar35 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }" else (compound_statement "{\n          iVar15 = 0;\n          sVar35 = 0;\n          do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);\n        }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "sVar35 = 0;" (assignment_expression "sVar35 = 0" identifier = number_literal) ;) (do_statement "do {\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          } while ((int)sVar35 < (int)uVar18);" do (compound_statement "{\n            dVar1 = *(double *)((int)&image->colormap->blue + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar29 = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->green + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar29 + 1) = uVar36;\n            dVar1 = *(double *)((int)&image->colormap->red + iVar15);\n            uVar36 = 0;\n            if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar29 + 1) = uVar36;\n            if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }\n            sVar35 = sVar35 + 1;\n            iVar15 = iVar15 + 0x50;\n            uVar18 = bmp_info.number_colors;\n            if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }\n          }" { (expression_statement "dVar1 = *(double *)((int)&image->colormap->blue + iVar15);" (assignment_expression "dVar1 = *(double *)((int)&image->colormap->blue + iVar15)" identifier = (pointer_expression "*(double *)((int)&image->colormap->blue + iVar15)" * (cast_expression "(double *)((int)&image->colormap->blue + iVar15)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&image->colormap->blue + iVar15)" ( (binary_expression "(int)&image->colormap->blue + iVar15" (cast_expression "(int)&image->colormap->blue" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&image->colormap->blue" & (field_expression "image->colormap->blue" (field_expression "image->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ;) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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 "uVar36 = 0xff;" (assignment_expression "uVar36 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar36 = (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 "*(undefined1 *)puVar29 = uVar36;" (assignment_expression "*(undefined1 *)puVar29 = uVar36" (pointer_expression "*(undefined1 *)puVar29" * (cast_expression "(undefined1 *)puVar29" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "dVar1 = *(double *)((int)&image->colormap->green + iVar15);" (assignment_expression "dVar1 = *(double *)((int)&image->colormap->green + iVar15)" identifier = (pointer_expression "*(double *)((int)&image->colormap->green + iVar15)" * (cast_expression "(double *)((int)&image->colormap->green + iVar15)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&image->colormap->green + iVar15)" ( (binary_expression "(int)&image->colormap->green + iVar15" (cast_expression "(int)&image->colormap->green" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&image->colormap->green" & (field_expression "image->colormap->green" (field_expression "image->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ;) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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 "uVar36 = 0xff;" (assignment_expression "uVar36 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar36 = (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 "*(undefined1 *)((int)puVar29 + 1) = uVar36;" (assignment_expression "*(undefined1 *)((int)puVar29 + 1) = uVar36" (pointer_expression "*(undefined1 *)((int)puVar29 + 1)" * (cast_expression "(undefined1 *)((int)puVar29 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + 1)" ( (binary_expression "(int)puVar29 + 1" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "dVar1 = *(double *)((int)&image->colormap->red + iVar15);" (assignment_expression "dVar1 = *(double *)((int)&image->colormap->red + iVar15)" identifier = (pointer_expression "*(double *)((int)&image->colormap->red + iVar15)" * (cast_expression "(double *)((int)&image->colormap->red + iVar15)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&image->colormap->red + iVar15)" ( (binary_expression "(int)&image->colormap->red + iVar15" (cast_expression "(int)&image->colormap->red" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&image->colormap->red" & (field_expression "image->colormap->red" (field_expression "image->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ;) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar1) {\n              dVar1 = dVar1 / (double)DAT_002a7ff0;\n              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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              uVar36 = 0xff;\n              if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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 "uVar36 = 0xff;" (assignment_expression "uVar36 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar1 < (double)DAT_002a7ff4) {\n                uVar36 = (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                uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar36 = (undefined1)(short)ROUND(dVar1 + (double)DAT_0029f124);" (assignment_expression "uVar36 = (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 "*(undefined1 *)(puVar29 + 1) = uVar36;" (assignment_expression "*(undefined1 *)(puVar29 + 1) = uVar36" (pointer_expression "*(undefined1 *)(puVar29 + 1)" * (cast_expression "(undefined1 *)(puVar29 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 1)" ( (binary_expression "puVar29 + 1" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar33) {\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }\n            else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }" if (parenthesized_expression "(bVar33)" ( identifier )) (compound_statement "{\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n            }" { (expression_statement "*(undefined1 *)((int)puVar29 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar29 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar29 + 3)" * (cast_expression "(undefined1 *)((int)puVar29 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + 3)" ( (binary_expression "(int)puVar29 + 3" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar29 = puVar29 + 2;" (assignment_expression "puVar29 = puVar29 + 2" identifier = (binary_expression "puVar29 + 2" identifier + number_literal)) ;) }) (else_clause "else {\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }" else (compound_statement "{\n              puVar29 = (undefined2 *)((int)puVar29 + 3);\n            }" { (expression_statement "puVar29 = (undefined2 *)((int)puVar29 + 3);" (assignment_expression "puVar29 = (undefined2 *)((int)puVar29 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar29 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + 3)" ( (binary_expression "(int)puVar29 + 3" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (expression_statement "sVar35 = sVar35 + 1;" (assignment_expression "sVar35 = sVar35 + 1" identifier = (binary_expression "sVar35 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = iVar15 + 0x50;" (assignment_expression "iVar15 = iVar15 + 0x50" identifier = (binary_expression "iVar15 + 0x50" identifier + number_literal)) ;) (expression_statement "uVar18 = bmp_info.number_colors;" (assignment_expression "uVar18 = bmp_info.number_colors" identifier = (field_expression "bmp_info.number_colors" identifier . field_identifier)) ;) (if_statement "if ((int)image->colors <= (int)bmp_info.number_colors) {\n              uVar18 = image->colors;\n            }" if (parenthesized_expression "((int)image->colors <= (int)bmp_info.number_colors)" ( (binary_expression "(int)image->colors <= (int)bmp_info.number_colors" (cast_expression "(int)image->colors" ( (type_descriptor "int" primitive_type) ) (field_expression "image->colors" identifier -> field_identifier)) <= (cast_expression "(int)bmp_info.number_colors" ( (type_descriptor "int" primitive_type) ) (field_expression "bmp_info.number_colors" identifier . field_identifier))) )) (compound_statement "{\n              uVar18 = image->colors;\n            }" { (expression_statement "uVar18 = image->colors;" (assignment_expression "uVar18 = image->colors" identifier = (field_expression "image->colors" identifier -> field_identifier)) ;) })) }) while (parenthesized_expression "((int)sVar35 < (int)uVar18)" ( (binary_expression "(int)sVar35 < (int)uVar18" (cast_expression "(int)sVar35" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (if_statement "if ((int)sVar35 < (int)sVar28) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }" if (parenthesized_expression "((int)sVar35 < (int)sVar28)" ( (binary_expression "(int)sVar35 < (int)sVar28" (cast_expression "(int)sVar35" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)sVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);\n        }" { (do_statement "do {\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          } while (sVar35 != sVar28);" do (compound_statement "{\n            while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }\n            sVar35 = sVar35 + 1;\n            puVar29 = (undefined2 *)((int)puVar29 + 3);\n          }" { (while_statement "while( true ) {\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              *(undefined1 *)(puVar29 + 1) = 0;\n              *puVar29 = 0;\n              if (!bVar33) break;\n              sVar35 = sVar35 + 1;\n              *(undefined1 *)((int)puVar29 + 3) = 0;\n              puVar29 = puVar29 + 2;\n              if (sVar35 == sVar28) goto LAB_001d3985;\n            }" { (expression_statement "*(undefined1 *)(puVar29 + 1) = 0;" (assignment_expression "*(undefined1 *)(puVar29 + 1) = 0" (pointer_expression "*(undefined1 *)(puVar29 + 1)" * (cast_expression "(undefined1 *)(puVar29 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 1)" ( (binary_expression "puVar29 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar29 = 0;" (assignment_expression "*puVar29 = 0" (pointer_expression "*puVar29" * identifier) = number_literal) ;) (if_statement "if (!bVar33) break;" if (parenthesized_expression "(!bVar33)" ( (unary_expression "!bVar33" ! identifier) )) (break_statement "break;" break ;)) (expression_statement "sVar35 = sVar35 + 1;" (assignment_expression "sVar35 = sVar35 + 1" identifier = (binary_expression "sVar35 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)((int)puVar29 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar29 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar29 + 3)" * (cast_expression "(undefined1 *)((int)puVar29 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + 3)" ( (binary_expression "(int)puVar29 + 3" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar29 = puVar29 + 2;" (assignment_expression "puVar29 = puVar29 + 2" identifier = (binary_expression "puVar29 + 2" identifier + number_literal)) ;) (if_statement "if (sVar35 == sVar28) goto LAB_001d3985;" if (parenthesized_expression "(sVar35 == sVar28)" ( (binary_expression "sVar35 == sVar28" identifier == identifier) )) (goto_statement "goto LAB_001d3985;" goto statement_identifier ;)) })) (expression_statement "sVar35 = sVar35 + 1;" (assignment_expression "sVar35 = sVar35 + 1" identifier = (binary_expression "sVar35 + 1" identifier + number_literal)) ;) (expression_statement "puVar29 = (undefined2 *)((int)puVar29 + 3);" (assignment_expression "puVar29 = (undefined2 *)((int)puVar29 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar29 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar29 + 3)" ( (binary_expression "(int)puVar29 + 3" (cast_expression "(int)puVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(sVar35 != sVar28)" ( (binary_expression "sVar35 != sVar28" identifier != identifier) )) ;) })) (labeled_statement "LAB_001d3985:\n        if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }" statement_identifier : (if_statement "if (bVar12 == 2) {\n          iVar15 = 3;\n        }\n        else {\n          iVar15 = 4;\n        }" if (parenthesized_expression "(bVar12 == 2)" ( (binary_expression "bVar12 == 2" identifier == number_literal) )) (compound_statement "{\n          iVar15 = 3;\n        }" { (expression_statement "iVar15 = 3;" (assignment_expression "iVar15 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          iVar15 = 4;\n        }" else (compound_statement "{\n          iVar15 = 4;\n        }" { (expression_statement "iVar15 = 4;" (assignment_expression "iVar15 = 4" identifier = number_literal) ;) })))) (expression_statement "WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00);" (call_expression "WriteBlob(image,iVar15 << (bVar31 & 0x1f),data_00)" identifier (argument_list "(image,iVar15 << (bVar31 & 0x1f),data_00)" ( identifier , (binary_expression "iVar15 << (bVar31 & 0x1f)" identifier << (parenthesized_expression "(bVar31 & 0x1f)" ( (binary_expression "bVar31 & 0x1f" identifier & number_literal) ))) , identifier ))) ;) (expression_statement "RelinquishMagickMemory(data_00);" (call_expression "RelinquishMagickMemory(data_00)" identifier (argument_list "(data_00)" ( identifier ))) ;) (expression_statement "MVar14 = image->debug;" (assignment_expression "MVar14 = image->debug" identifier = (field_expression "image->debug" identifier -> field_identifier)) ;) })) (expression_statement "uVar18 = bmp_info.image_size;" (assignment_expression "uVar18 = bmp_info.image_size" identifier = (field_expression "bmp_info.image_size" identifier . field_identifier)) ;) (if_statement "if (MVar14 != MagickFalse) {\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }" if (parenthesized_expression "(MVar14 != MagickFalse)" ( (binary_expression "MVar14 != MagickFalse" identifier != identifier) )) (compound_statement "{\n        LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);\n      }" { (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size);" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size)" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",\n                       (short)bmp_info.image_size)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Pixels:  %u bytes"" " string_content ") , (cast_expression "(short)bmp_info.image_size" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (field_expression "bmp_info.image_size" identifier . field_identifier)) ))) ;) })) (expression_statement "WriteBlob(image,uVar18,local_168);" (call_expression "WriteBlob(image,uVar18,local_168)" identifier (argument_list "(image,uVar18,local_168)" ( identifier , identifier , identifier ))) ;) (if_statement "if (string_info != (StringInfo *)0x0) {\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }" if (parenthesized_expression "(string_info != (StringInfo *)0x0)" ( (binary_expression "string_info != (StringInfo *)0x0" identifier != (cast_expression "(StringInfo *)0x0" ( (type_descriptor "StringInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }\n        data = GetStringInfoDatum(string_info);\n        WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }\n      }" { (if_statement "if (image->debug != MagickFalse) {\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }" if (parenthesized_expression "(image->debug != MagickFalse)" ( (binary_expression "image->debug != MagickFalse" (field_expression "image->debug" identifier -> field_identifier) != identifier) )) (compound_statement "{\n          dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;\n          LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));\n        }" { (expression_statement "dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174;" (assignment_expression "dVar1 = (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174" identifier = (binary_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                  (double)(short)local_174" (cast_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) + (cast_expression "(double)(short)local_174" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)local_174" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)))) ;) (expression_statement "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));" (call_expression "LogMagickEvent(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20))" identifier (argument_list "(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         SUB82(dVar1,0),(int)((ulonglong)dVar1 >> 0x20))" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Profile:  %g bytes"" " string_content ") , (call_expression "SUB82(dVar1,0)" identifier (argument_list "(dVar1,0)" ( identifier , number_literal ))) , (cast_expression "(int)((ulonglong)dVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar1 >> 0x20)" ( (binary_expression "(ulonglong)dVar1 >> 0x20" (cast_expression "(ulonglong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))) ;) })) (expression_statement "data = GetStringInfoDatum(string_info);" (assignment_expression "data = GetStringInfoDatum(string_info)" identifier = (call_expression "GetStringInfoDatum(string_info)" identifier (argument_list "(string_info)" ( identifier )))) ;) (expression_statement "WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data);" (call_expression "WriteBlob(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data)" identifier (argument_list "(image,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),data)" ( identifier , (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) , identifier ))) ;) (if_statement "if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }" if (parenthesized_expression "(local_170 != 0 || local_174 != 0)" ( (binary_expression "local_170 != 0 || local_174 != 0" (binary_expression "local_170 != 0" identifier != number_literal) || (binary_expression "local_174 != 0" identifier != number_literal)) )) (compound_statement "{\n          WriteBlob(image,local_174,&DAT_002cc660);\n        }" { (expression_statement "WriteBlob(image,local_174,&DAT_002cc660);" (call_expression "WriteBlob(image,local_174,&DAT_002cc660)" identifier (argument_list "(image,local_174,&DAT_002cc660)" ( identifier , identifier , (pointer_expression "&DAT_002cc660" & identifier) ))) ;) })) })) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "pIVar24 = GetNextImageInList(image);" (assignment_expression "pIVar24 = GetNextImageInList(image)" identifier = (call_expression "GetNextImageInList(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (pIVar24 == (Image *)0x0) {\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }" if (parenthesized_expression "(pIVar24 == (Image *)0x0)" ( (binary_expression "pIVar24 == (Image *)0x0" identifier == (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001d3caf:\n        CloseBlob(image);\n        MVar14 = MagickTrue;\n        goto LAB_001d3a3a;\n      }" { (labeled_statement "LAB_001d3caf:\n        CloseBlob(image);" statement_identifier : (expression_statement "CloseBlob(image);" (call_expression "CloseBlob(image)" identifier (argument_list "(image)" ( identifier ))) ;)) (expression_statement "MVar14 = MagickTrue;" (assignment_expression "MVar14 = MagickTrue" identifier = identifier) ;) (goto_statement "goto LAB_001d3a3a;" goto statement_identifier ;) })) (expression_statement "image = SyncNextImageInList(image);" (assignment_expression "image = SyncNextImageInList(image)" identifier = (call_expression "SyncNextImageInList(image)" identifier (argument_list "(image)" ( identifier )))) ;) (expression_statement "uVar20 = local_10c + 1;" (assignment_expression "uVar20 = local_10c + 1" identifier = (binary_expression "local_10c + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = local_108 + (uint)(0xfffffffe < local_10c);" (assignment_expression "iVar15 = local_108 + (uint)(0xfffffffe < local_10c)" identifier = (binary_expression "local_108 + (uint)(0xfffffffe < local_10c)" identifier + (call_expression "(uint)(0xfffffffe < local_10c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < local_10c)" ( (binary_expression "0xfffffffe < local_10c" number_literal < identifier) ))))) ;) (expression_statement "MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)\n      ;" (assignment_expression "MVar14 = SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)" identifier = (call_expression "SetImageProgress(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)" identifier (argument_list "(image,"Save/Images",CONCAT44(local_108,local_10c),(ulonglong)sVar17)" ( identifier , (string_literal ""Save/Images"" " string_content ") , (call_expression "CONCAT44(local_108,local_10c)" identifier (argument_list "(local_108,local_10c)" ( identifier , identifier ))) , (cast_expression "(ulonglong)sVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) )))) ;) (if_statement "if ((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)) goto LAB_001d3caf;" if (parenthesized_expression "((MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse))" ( (binary_expression "(MVar14 == MagickFalse) || (image_info->adjoin == MagickFalse)" (parenthesized_expression "(MVar14 == MagickFalse)" ( (binary_expression "MVar14 == MagickFalse" identifier == identifier) )) || (parenthesized_expression "(image_info->adjoin == MagickFalse)" ( (binary_expression "image_info->adjoin == MagickFalse" (field_expression "image_info->adjoin" identifier -> field_identifier) == identifier) ))) )) (goto_statement "goto LAB_001d3caf;" goto statement_identifier ;)) (expression_statement "uVar18 = image->colorspace - GRAYColorspace;" (assignment_expression "uVar18 = image->colorspace - GRAYColorspace" identifier = (binary_expression "image->colorspace - GRAYColorspace" (field_expression "image->colorspace" identifier -> field_identifier) - identifier)) ;) (expression_statement "local_10c = uVar20;" (assignment_expression "local_10c = uVar20" identifier = identifier) ;) (expression_statement "local_108 = iVar15;" (assignment_expression "local_108 = iVar15" identifier = identifier) ;) (if_statement "if (0x1e < uVar18) break;" if (parenthesized_expression "(0x1e < uVar18)" ( (binary_expression "0x1e < uVar18" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_001d1cae:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "((0x403c0001U >> (uVar18 & 0x1f) & 1) != 0)" ( (binary_expression "(0x403c0001U >> (uVar18 & 0x1f) & 1) != 0" (parenthesized_expression "(0x403c0001U >> (uVar18 & 0x1f) & 1)" ( (binary_expression "0x403c0001U >> (uVar18 & 0x1f) & 1" (binary_expression "0x403c0001U >> (uVar18 & 0x1f)" number_literal >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_001d0cb0(int *param_1,int *param_2,int param_3)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}\n\n" (function_definition "int FUN_001d0cb0(int *param_1,int *param_2,int param_3)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}" primitive_type (function_declarator "FUN_001d0cb0(int *param_1,int *param_2,int param_3)" identifier (parameter_list "(int *param_1,int *param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "ushort uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "ushort *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined2 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined2 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "char cVar24;" primitive_type identifier ;) (declaration "byte bVar25;" type_identifier identifier ;) (declaration "ushort uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "char *pcVar30;" primitive_type (pointer_declarator "*pcVar30" * identifier) ;) (declaration "undefined1 uVar31;" type_identifier identifier ;) (declaration "ushort *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "ushort *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "undefined4 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "size_t sVar37;" primitive_type identifier ;) (declaration "char *pcVar38;" primitive_type (pointer_declarator "*pcVar38" * identifier) ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar41;" primitive_type identifier ;) (declaration "bool bVar42;" primitive_type identifier ;) (declaration "bool bVar43;" primitive_type identifier ;) (declaration "byte bVar44;" type_identifier identifier ;) (declaration "undefined4 uVar45;" type_identifier identifier ;) (declaration "char *pcVar46;" primitive_type (pointer_declarator "*pcVar46" * identifier) ;) (declaration "double dVar47;" primitive_type identifier ;) (declaration "undefined8 local_184;" type_identifier identifier ;) (declaration "byte local_17c;" type_identifier identifier ;) (declaration "undefined1 uStack_17b;" type_identifier identifier ;) (declaration "undefined2 uStack_17a;" type_identifier identifier ;) (declaration "int iStack_178;" primitive_type identifier ;) (declaration "int local_174;" primitive_type identifier ;) (declaration "int local_170;" primitive_type identifier ;) (declaration "char *local_168;" primitive_type (pointer_declarator "*local_168" * identifier) ;) (declaration "char *local_164;" primitive_type (pointer_declarator "*local_164" * identifier) ;) (declaration "int local_160;" primitive_type identifier ;) (declaration "uint local_14c;" type_identifier identifier ;) (declaration "int iStack_148;" primitive_type identifier ;) (declaration "uint local_144;" type_identifier identifier ;) (declaration "uint local_134;" type_identifier identifier ;) (declaration "int iStack_130;" primitive_type identifier ;) (declaration "int local_128;" primitive_type identifier ;) (declaration "int local_124;" primitive_type identifier ;) (declaration "short local_120;" (sized_type_specifier "short" short) identifier ;) (declaration "short local_11c;" (sized_type_specifier "short" short) identifier ;) (declaration "uint local_10c;" type_identifier identifier ;) (declaration "int local_108;" primitive_type identifier ;) (declaration "uint local_104;" type_identifier identifier ;) (declaration "int iStack_100;" primitive_type identifier ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "undefined4 local_c4;" type_identifier identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "int local_b8;" primitive_type identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "undefined2 local_b0;" type_identifier identifier ;) (declaration "short local_ae;" (sized_type_specifier "short" short) identifier ;) (declaration "uint local_ac;" type_identifier identifier ;) (declaration "size_t local_a8;" primitive_type identifier ;) (declaration "undefined4 local_a4;" type_identifier identifier ;) (declaration "undefined4 local_a0;" type_identifier identifier ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined4 local_8c;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "double local_38;" primitive_type identifier ;) (declaration "double local_30;" primitive_type identifier ;) (declaration "double local_28;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar44 = 0;" (assignment_expression "bVar44 = 0" 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) ))))) ;) (if_statement "if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_1 == (int *)0x0)" ( (binary_expression "param_1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" { (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" identifier (argument_list "("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" ( (string_literal ""image_info != (const ImageInfo *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" if (parenthesized_expression "(param_1[0xc7d] != -0x54535255)" ( (binary_expression "param_1[0xc7d] != -0x54535255" (subscript_expression "param_1[0xc7d]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" { (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" identifier (argument_list "("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" ( (string_literal ""image_info->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" { (expression_statement "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" identifier (argument_list "("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" ( (string_literal ""image != (Image *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_2[0xcd1] != -0x54535255)" ( (binary_expression "param_2[0xcd1] != -0x54535255" (subscript_expression "param_2[0xcd1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" { (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }" if (parenthesized_expression "(param_2[0xcca] != 0)" ( (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }" { (expression_statement "LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);" (call_expression "LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6)" identifier (argument_list "(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) })) (if_statement "if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" { (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" identifier (argument_list "("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" ( (string_literal ""exception != (ExceptionInfo *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" if (parenthesized_expression "(*(int *)(param_3 + 0x1c) != -0x54535255)" ( (binary_expression "*(int *)(param_3 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_3 + 0x1c)" * (cast_expression "(int *)(param_3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" { (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" identifier (argument_list "("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" ( (string_literal ""exception->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""WriteBMPImage"" " string_content ") ))) ;) })) (expression_statement "iVar13 = OpenBlob(param_1,param_2,4,param_3);" (assignment_expression "iVar13 = OpenBlob(param_1,param_2,4,param_3)" identifier = (call_expression "OpenBlob(param_1,param_2,4,param_3)" identifier (argument_list "(param_1,param_2,4,param_3)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }" { (labeled_statement "LAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\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                    \n      FUN_0029eab0();\n    }" { (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar13;" return identifier ;) })) (expression_statement "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);" (assignment_expression "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a)" identifier = (call_expression "LocaleCompare(param_1 + 0x7c,&DAT_002a227a)" identifier (argument_list "(param_1 + 0x7c,&DAT_002a227a)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) , (pointer_expression "&DAT_002a227a" & identifier) )))) ;) (expression_statement "bVar11 = 2;" (assignment_expression "bVar11 = 2" identifier = number_literal) ;) (if_statement "if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }" { (expression_statement "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);" (assignment_expression "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f)" identifier = (call_expression "LocaleCompare(param_1 + 0x7c,&DAT_002a227f)" identifier (argument_list "(param_1 + 0x7c,&DAT_002a227f)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) , (pointer_expression "&DAT_002a227f" & identifier) )))) ;) (expression_statement "bVar11 = (iVar13 != 0) + 3;" (assignment_expression "bVar11 = (iVar13 != 0) + 3" identifier = (binary_expression "(iVar13 != 0) + 3" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) + number_literal)) ;) })) (expression_statement "iVar13 = GetImageOption(param_1,"bmp:format");" (assignment_expression "iVar13 = GetImageOption(param_1,"bmp:format")" identifier = (call_expression "GetImageOption(param_1,"bmp:format")" identifier (argument_list "(param_1,"bmp:format")" ( identifier , (string_literal ""bmp:format"" " string_content ") )))) ;) (if_statement "if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Format=%s"" " string_content ") , identifier ))) ;) (expression_statement "iVar14 = LocaleCompare(iVar13,&DAT_002cc136);" (assignment_expression "iVar14 = LocaleCompare(iVar13,&DAT_002cc136)" identifier = (call_expression "LocaleCompare(iVar13,&DAT_002cc136)" identifier (argument_list "(iVar13,&DAT_002cc136)" ( identifier , (pointer_expression "&DAT_002cc136" & identifier) )))) ;) (expression_statement "bVar25 = 2;" (assignment_expression "bVar25 = 2" identifier = number_literal) ;) (if_statement "if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar25 = bVar11;\n    }" { (expression_statement "bVar25 = bVar11;" (assignment_expression "bVar25 = bVar11" identifier = identifier) ;) })) (expression_statement "iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);" (assignment_expression "iVar14 = LocaleCompare(iVar13,&DAT_002cc13b)" identifier = (call_expression "LocaleCompare(iVar13,&DAT_002cc13b)" identifier (argument_list "(iVar13,&DAT_002cc13b)" ( identifier , (pointer_expression "&DAT_002cc13b" & identifier) )))) ;) (expression_statement "bVar10 = 3;" (assignment_expression "bVar10 = 3" identifier = number_literal) ;) (if_statement "if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar10 = bVar25;\n    }" { (expression_statement "bVar10 = bVar25;" (assignment_expression "bVar10 = bVar25" identifier = identifier) ;) })) (expression_statement "iVar13 = LocaleCompare(iVar13,&DAT_002cc140);" (assignment_expression "iVar13 = LocaleCompare(iVar13,&DAT_002cc140)" identifier = (call_expression "LocaleCompare(iVar13,&DAT_002cc140)" identifier (argument_list "(iVar13,&DAT_002cc140)" ( identifier , (pointer_expression "&DAT_002cc140" & identifier) )))) ;) (expression_statement "bVar11 = 4;" (assignment_expression "bVar11 = 4" identifier = number_literal) ;) (if_statement "if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar11 = bVar10;\n    }" { (expression_statement "bVar11 = bVar10;" (assignment_expression "bVar11 = bVar10" identifier = identifier) ;) })) })) (expression_statement "uVar15 = GetImageListLength(param_2);" (assignment_expression "uVar15 = GetImageListLength(param_2)" identifier = (call_expression "GetImageListLength(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" identifier = number_literal) ;) (expression_statement "local_108 = 0;" (assignment_expression "local_108 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = param_2[1] - 3;" (assignment_expression "uVar16 = param_2[1] - 3" identifier = (binary_expression "param_2[1] - 3" (subscript_expression "param_2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (uVar16 < 0x1f) goto LAB_001d1cae;" if (parenthesized_expression "(uVar16 < 0x1f)" ( (binary_expression "uVar16 < 0x1f" identifier < number_literal) )) (goto_statement "goto LAB_001d1cae;" goto statement_identifier ;)) (do_statement "do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );" do (compound_statement "{\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  }" { (expression_statement "TransformImageColorspace(param_2,0x17);" (call_expression "TransformImageColorspace(param_2,0x17)" identifier (argument_list "(param_2,0x17)" ( identifier , number_literal ))) ;) (do_statement "do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);" do (compound_statement "{\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    }" { (expression_statement "puVar36 = &local_c4;" (assignment_expression "puVar36 = &local_c4" identifier = (pointer_expression "&local_c4" & identifier)) ;) (for_statement "for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }" for ( (assignment_expression "iVar13 = 0x29" identifier = number_literal) ; (binary_expression "iVar13 != 0" identifier != number_literal) ; (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ) (compound_statement "{\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }" { (expression_statement "*puVar36 = 0;" (assignment_expression "*puVar36 = 0" (pointer_expression "*puVar36" * identifier) = number_literal) ;) (expression_statement "puVar36 = puVar36 + (uint)bVar44 * -2 + 1;" (assignment_expression "puVar36 = puVar36 + (uint)bVar44 * -2 + 1" identifier = (binary_expression "puVar36 + (uint)bVar44 * -2 + 1" (binary_expression "puVar36 + (uint)bVar44 * -2" identifier + (binary_expression "(uint)bVar44 * -2" (cast_expression "(uint)bVar44" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (if_statement "if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }" { (expression_statement "local_c8 = 0x1a;" (assignment_expression "local_c8 = 0x1a" identifier = number_literal) ;) (expression_statement "iVar13 = 0x1a;" (assignment_expression "iVar13 = 0x1a" identifier = number_literal) ;) }) (else_clause "else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" else (compound_statement "{\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" { (expression_statement "local_c8 = 0x36;" (assignment_expression "local_c8 = 0x36" identifier = number_literal) ;) (expression_statement "iVar13 = 0x36;" (assignment_expression "iVar13 = 0x36" identifier = number_literal) ;) }))) (expression_statement "local_98 = 0xff0000;" (assignment_expression "local_98 = 0xff0000" identifier = number_literal) ;) (expression_statement "local_94 = 0xff00;" (assignment_expression "local_94 = 0xff00" identifier = number_literal) ;) (expression_statement "local_90 = 0xff;" (assignment_expression "local_90 = 0xff" identifier = number_literal) ;) (expression_statement "local_8c = 0xff000000;" (assignment_expression "local_8c = 0xff000000" identifier = number_literal) ;) (expression_statement "iVar14 = *param_2;" (assignment_expression "iVar14 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_c0 = iVar13;" (assignment_expression "local_c0 = iVar13" identifier = identifier) ;) (if_statement "if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (if_statement "if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }" if (parenthesized_expression "(0x100 < uVar16)" ( (binary_expression "0x100 < uVar16" number_literal < identifier) )) (compound_statement "{\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }" { (expression_statement "SetImageStorageClass(param_2,1);" (call_expression "SetImageStorageClass(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (expression_statement "iVar14 = *param_2;" (assignment_expression "iVar14 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (goto_statement "goto LAB_001d0f25;" goto statement_identifier ;) })) (labeled_statement "LAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" statement_identifier : (if_statement "if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" if (parenthesized_expression "(uVar16 < 3)" ( (binary_expression "uVar16 < 3" identifier < number_literal) )) (compound_statement "{\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }" { (expression_statement "local_ae = 1;" (assignment_expression "local_ae = 1" identifier = number_literal) ;) (if_statement "if (*param_1 == 0x13) goto LAB_001d36c0;" if (parenthesized_expression "(*param_1 == 0x13)" ( (binary_expression "*param_1 == 0x13" (pointer_expression "*param_1" * identifier) == number_literal) )) (goto_statement "goto LAB_001d36c0;" goto statement_identifier ;)) (labeled_statement "LAB_001d0f54:\n          local_17c = (byte)local_ae;" statement_identifier : (expression_statement "local_17c = (byte)local_ae;" (assignment_expression "local_17c = (byte)local_ae" identifier = (cast_expression "(byte)local_ae" ( (type_descriptor "byte" type_identifier) ) identifier)) ;)) (expression_statement "local_144 = 1 << (local_17c & 0x1f);" (assignment_expression "local_144 = 1 << (local_17c & 0x1f)" identifier = (binary_expression "1 << (local_17c & 0x1f)" number_literal << (parenthesized_expression "(local_17c & 0x1f)" ( (binary_expression "local_17c & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uStack_17b = (undefined1)((ushort)local_ae >> 8);" (assignment_expression "uStack_17b = (undefined1)((ushort)local_ae >> 8)" identifier = (call_expression "(undefined1)((ushort)local_ae >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((ushort)local_ae >> 8)" ( (binary_expression "(ushort)local_ae >> 8" (cast_expression "(ushort)local_ae" ( (type_descriptor "ushort" type_identifier) ) identifier) >> number_literal) )))) ;) }) (else_clause "else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" else (compound_statement "{\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" { (expression_statement "local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;" (assignment_expression "local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8" identifier = (binary_expression "(-(ushort)(uVar16 < 0x11) & 0xfffc) + 8" (parenthesized_expression "(-(ushort)(uVar16 < 0x11) & 0xfffc)" ( (binary_expression "-(ushort)(uVar16 < 0x11) & 0xfffc" (unary_expression "-(ushort)(uVar16 < 0x11)" - (call_expression "(ushort)(uVar16 < 0x11)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar16 < 0x11)" ( (binary_expression "uVar16 < 0x11" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (if_statement "if (*param_1 != 0x13) goto LAB_001d0f54;" if (parenthesized_expression "(*param_1 != 0x13)" ( (binary_expression "*param_1 != 0x13" (pointer_expression "*param_1" * identifier) != number_literal) )) (goto_statement "goto LAB_001d0f54;" goto statement_identifier ;)) (labeled_statement "LAB_001d36c0:\n          local_144 = 0x100;" statement_identifier : (expression_statement "local_144 = 0x100;" (assignment_expression "local_144 = 0x100" identifier = number_literal) ;)) (expression_statement "local_ae = 8;" (assignment_expression "local_ae = 8" identifier = number_literal) ;) (expression_statement "local_17c = 8;" (assignment_expression "local_17c = 8" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) })))) (expression_statement "local_9c = local_144;" (assignment_expression "local_9c = local_144" identifier = identifier) ;) (if_statement "if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" if (parenthesized_expression "((param_2[0xa5] == 0) && (uVar16 <= local_144))" ( (binary_expression "(param_2[0xa5] == 0) && (uVar16 <= local_144)" (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(uVar16 <= local_144)" ( (binary_expression "uVar16 <= local_144" identifier <= identifier) ))) )) (compound_statement "{\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }" { (expression_statement "local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));" (assignment_expression "local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f))" identifier = (binary_expression "iVar13 + (3 << ((byte)local_ae & 0x1f))" identifier + (parenthesized_expression "(3 << ((byte)local_ae & 0x1f))" ( (binary_expression "3 << ((byte)local_ae & 0x1f)" number_literal << (parenthesized_expression "((byte)local_ae & 0x1f)" ( (binary_expression "(byte)local_ae & 0x1f" (cast_expression "(byte)local_ae" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "iVar13 = local_c0;" (assignment_expression "iVar13 = local_c0" identifier = identifier) ;) (if_statement "if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }" if (parenthesized_expression "(bVar11 != 2)" ( (binary_expression "bVar11 != 2" identifier != number_literal) )) (compound_statement "{\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }" { (expression_statement "local_c0 = local_c0 + local_144;" (assignment_expression "local_c0 = local_c0 + local_144" identifier = (binary_expression "local_c0 + local_144" identifier + identifier)) ;) (expression_statement "iVar13 = local_c0;" (assignment_expression "iVar13 = local_c0" identifier = identifier) ;) })) }) (else_clause "else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" else (compound_statement "{\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" { (expression_statement "SetImageStorageClass(param_2,1);" (call_expression "SetImageStorageClass(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (if_statement "if (*param_2 == 1) goto LAB_001d3250;" if (parenthesized_expression "(*param_2 == 1)" ( (binary_expression "*param_2 == 1" (pointer_expression "*param_2" * identifier) == number_literal) )) (goto_statement "goto LAB_001d3250;" goto statement_identifier ;)) }))) (expression_statement "uVar16 = (uint)CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar16 = (uint)CONCAT11(uStack_17b,local_17c)" identifier = (cast_expression "(uint)CONCAT11(uStack_17b,local_17c)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))))) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_c8 = iVar13;" (assignment_expression "local_c8 = iVar13" identifier = identifier) ;) }) (else_clause "else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" else (compound_statement "{\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" { (labeled_statement "LAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" statement_identifier : (if_statement "if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" if (parenthesized_expression "(iVar14 != 1)" ( (binary_expression "iVar14 != 1" identifier != number_literal) )) (compound_statement "{\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001d0f31;" goto statement_identifier ;) }))) (labeled_statement "LAB_001d3250:\n        local_9c = 0;" statement_identifier : (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;)) (expression_statement "iVar13 = GetImageOption(param_1,"bmp:subtype");" (assignment_expression "iVar13 = GetImageOption(param_1,"bmp:subtype")" identifier = (call_expression "GetImageOption(param_1,"bmp:subtype")" identifier (argument_list "(param_1,"bmp:subtype")" ( identifier , (string_literal ""bmp:subtype"" " string_content ") )))) ;) (if_statement "if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }" { (if_statement "if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" if (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) (compound_statement "{\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }" { (if_statement "if (param_2[0xa5] == 0) goto LAB_001d3e67;" if (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001d3e67;" goto statement_identifier ;)) (labeled_statement "LAB_001d3d56:\n            local_ac = 3;" statement_identifier : (expression_statement "local_ac = 3;" (assignment_expression "local_ac = 3" identifier = number_literal) ;)) (expression_statement "local_ae = 0x20;" (assignment_expression "local_ae = 0x20" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x20;" (assignment_expression "uVar16 = 0x20" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" else (compound_statement "{\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" { (labeled_statement "LAB_001d3da8:\n            local_ac = 0;" statement_identifier : (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;)) (expression_statement "local_ae = 0x18;" (assignment_expression "local_ae = 0x18" identifier = number_literal) ;) (if_statement "if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" if (parenthesized_expression "((bVar11 == 3) && (param_2[0xa5] != 0))" ( (binary_expression "(bVar11 == 3) && (param_2[0xa5] != 0)" (parenthesized_expression "(bVar11 == 3)" ( (binary_expression "bVar11 == 3" identifier == number_literal) )) && (parenthesized_expression "(param_2[0xa5] != 0)" ( (binary_expression "param_2[0xa5] != 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }" { (expression_statement "uVar45 = GetImageOption(param_1,"bmp3:alpha");" (assignment_expression "uVar45 = GetImageOption(param_1,"bmp3:alpha")" identifier = (call_expression "GetImageOption(param_1,"bmp3:alpha")" identifier (argument_list "(param_1,"bmp3:alpha")" ( identifier , (string_literal ""bmp3:alpha"" " string_content ") )))) ;) (expression_statement "iVar13 = IsStringTrue(uVar45);" (assignment_expression "iVar13 = IsStringTrue(uVar45)" identifier = (call_expression "IsStringTrue(uVar45)" identifier (argument_list "(uVar45)" ( identifier )))) ;) (if_statement "if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }" { (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" else (compound_statement "{\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" { (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x20;" (assignment_expression "uVar16 = 0x20" identifier = number_literal) ;) (expression_statement "local_ae = 0x20;" (assignment_expression "local_ae = 0x20" identifier = number_literal) ;) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" else (compound_statement "{\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" { (labeled_statement "LAB_001d3e67:\n              local_ac = 0;" statement_identifier : (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;)) (expression_statement "local_ae = 0x18;" (assignment_expression "local_ae = 0x18" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" identifier = number_literal) ;) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }))) }))) }) (else_clause "else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" else (compound_statement "{\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" { (if_statement "if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" if (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }" { (expression_statement "iVar14 = LocaleNCompare(iVar13,"RGB555");" (assignment_expression "iVar14 = LocaleNCompare(iVar13,"RGB555")" identifier = (call_expression "LocaleNCompare(iVar13,"RGB555")" identifier (argument_list "(iVar13,"RGB555")" ( identifier , (string_literal ""RGB555"" " string_content ") )))) ;) (if_statement "if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }" { (expression_statement "local_98 = 0x7c00;" (assignment_expression "local_98 = 0x7c00" identifier = number_literal) ;) (expression_statement "local_94 = 0x3e0;" (assignment_expression "local_94 = 0x3e0" identifier = number_literal) ;) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" identifier = number_literal) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) }) (else_clause "else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" else (compound_statement "{\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" { (expression_statement "iVar13 = LocaleNCompare(iVar13,"RGB565");" (assignment_expression "iVar13 = LocaleNCompare(iVar13,"RGB565")" identifier = (call_expression "LocaleNCompare(iVar13,"RGB565")" identifier (argument_list "(iVar13,"RGB565")" ( identifier , (string_literal ""RGB565"" " string_content ") )))) ;) (if_statement "if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" { (if_statement "if (bVar11 == 4) goto LAB_001d3e67;" if (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) (goto_statement "goto LAB_001d3e67;" goto statement_identifier ;)) (goto_statement "goto LAB_001d3da8;" goto statement_identifier ;) })) (expression_statement "local_98 = 0xf800;" (assignment_expression "local_98 = 0xf800" identifier = number_literal) ;) (expression_statement "local_94 = 0x7e0;" (assignment_expression "local_94 = 0x7e0" identifier = number_literal) ;) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" identifier = number_literal) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 2;" (assignment_expression "iVar14 = 2" identifier = number_literal) ;) }))) }) (else_clause "else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" else (compound_statement "{\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" { (expression_statement "iVar14 = LocaleNCompare(iVar13,"ARGB4444");" (assignment_expression "iVar14 = LocaleNCompare(iVar13,"ARGB4444")" identifier = (call_expression "LocaleNCompare(iVar13,"ARGB4444")" identifier (argument_list "(iVar13,"ARGB4444")" ( identifier , (string_literal ""ARGB4444"" " string_content ") )))) ;) (if_statement "if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }" { (expression_statement "local_98 = 0xf00;" (assignment_expression "local_98 = 0xf00" identifier = number_literal) ;) (expression_statement "local_94 = 0xf0;" (assignment_expression "local_94 = 0xf0" identifier = number_literal) ;) (expression_statement "local_90 = 0xf;" (assignment_expression "local_90 = 0xf" identifier = number_literal) ;) (expression_statement "local_8c = 0xf000;" (assignment_expression "local_8c = 0xf000" identifier = number_literal) ;) (expression_statement "iVar14 = 3;" (assignment_expression "iVar14 = 3" identifier = number_literal) ;) }) (else_clause "else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" else (compound_statement "{\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" { (expression_statement "iVar13 = LocaleNCompare(iVar13,"ARGB1555");" (assignment_expression "iVar13 = LocaleNCompare(iVar13,"ARGB1555")" identifier = (call_expression "LocaleNCompare(iVar13,"ARGB1555")" identifier (argument_list "(iVar13,"ARGB1555")" ( identifier , (string_literal ""ARGB1555"" " string_content ") )))) ;) (if_statement "if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" { (if_statement "if (bVar11 == 4) goto LAB_001d3d56;" if (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) (goto_statement "goto LAB_001d3d56;" goto statement_identifier ;)) (goto_statement "goto LAB_001d3da8;" goto statement_identifier ;) })) (expression_statement "local_98 = 0x7c00;" (assignment_expression "local_98 = 0x7c00" identifier = number_literal) ;) (expression_statement "local_94 = 0x3e0;" (assignment_expression "local_94 = 0x3e0" identifier = number_literal) ;) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" identifier = number_literal) ;) (expression_statement "local_8c = 0x8000;" (assignment_expression "local_8c = 0x8000" identifier = number_literal) ;) (expression_statement "iVar14 = 4;" (assignment_expression "iVar14 = 4" identifier = number_literal) ;) }))) }))) (expression_statement "local_ac = 3;" (assignment_expression "local_ac = 3" identifier = number_literal) ;) (expression_statement "local_ae = 0x10;" (assignment_expression "local_ae = 0x10" identifier = number_literal) ;) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0x10;" (assignment_expression "local_17c = 0x10" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0x10;" (assignment_expression "uVar16 = 0x10" identifier = number_literal) ;) }))) }))) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = uVar16 * param_2[6] + 0x1f >> 5;" (assignment_expression "uVar16 = uVar16 * param_2[6] + 0x1f >> 5" identifier = (binary_expression "uVar16 * param_2[6] + 0x1f >> 5" (binary_expression "uVar16 * param_2[6] + 0x1f" (binary_expression "uVar16 * param_2[6]" identifier * (subscript_expression "param_2[6]" identifier [ number_literal ])) + number_literal) >> number_literal)) ;) (expression_statement "uVar17 = uVar16 * 4;" (assignment_expression "uVar17 = uVar16 * 4" identifier = (binary_expression "uVar16 * 4" identifier * number_literal)) ;) (expression_statement "iVar13 = GetImageProfile(param_2,&DAT_002a81ca);" (assignment_expression "iVar13 = GetImageProfile(param_2,&DAT_002a81ca)" identifier = (call_expression "GetImageProfile(param_2,&DAT_002a81ca)" identifier (argument_list "(param_2,&DAT_002a81ca)" ( identifier , (pointer_expression "&DAT_002a81ca" & identifier) )))) ;) (expression_statement "bVar41 = iVar13 != 0;" (assignment_expression "bVar41 = iVar13 != 0" identifier = (binary_expression "iVar13 != 0" identifier != number_literal)) ;) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) (if_statement "if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }" if (parenthesized_expression "(param_2[0x75] == 0 && !bVar41)" ( (binary_expression "param_2[0x75] == 0 && !bVar41" (binary_expression "param_2[0x75] == 0" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) == number_literal) && (unary_expression "!bVar41" ! identifier)) )) (compound_statement "{\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }" { (expression_statement "bVar6 = *(double *)(param_2 + 0x5b) != 0.0;" (assignment_expression "bVar6 = *(double *)(param_2 + 0x5b) != 0.0" identifier = (binary_expression "*(double *)(param_2 + 0x5b) != 0.0" (pointer_expression "*(double *)(param_2 + 0x5b)" * (cast_expression "(double *)(param_2 + 0x5b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5b)" ( (binary_expression "param_2 + 0x5b" identifier + number_literal) )))) != number_literal)) ;) })) (if_statement "if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n        local_bc = 0xc;\n      }" { (expression_statement "local_bc = 0xc;" (assignment_expression "local_bc = 0xc" identifier = number_literal) ;) }) (else_clause "else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" else (if_statement "if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" if (parenthesized_expression "((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0))" ( (binary_expression "(bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)" (parenthesized_expression "(bVar11 == 3)" ( (binary_expression "bVar11 == 3" identifier == number_literal) )) || (parenthesized_expression "(!bVar6 && param_2[0xa5] == 0)" ( (binary_expression "!bVar6 && param_2[0xa5] == 0" (unary_expression "!bVar6" ! identifier) && (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\n        local_bc = 0x28;\n        bVar11 = 3;\n      }" { (expression_statement "local_bc = 0x28;" (assignment_expression "local_bc = 0x28" identifier = number_literal) ;) (expression_statement "bVar11 = 3;" (assignment_expression "bVar11 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" else (compound_statement "{\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" { (if_statement "if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" if (parenthesized_expression "(param_2[0x75] == 0 && !bVar41)" ( (binary_expression "param_2[0x75] == 0 && !bVar41" (binary_expression "param_2[0x75] == 0" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) == number_literal) && (unary_expression "!bVar41" ! identifier)) )) (compound_statement "{\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }" { (expression_statement "local_bc = 0x6c;" (assignment_expression "local_bc = 0x6c" identifier = number_literal) ;) (expression_statement "iVar18 = 0x44;" (assignment_expression "iVar18 = 0x44" identifier = number_literal) ;) }) (else_clause "else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" else (compound_statement "{\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" { (expression_statement "local_bc = 0x7c;" (assignment_expression "local_bc = 0x7c" identifier = number_literal) ;) (expression_statement "iVar18 = 0x54;" (assignment_expression "iVar18 = 0x54" identifier = number_literal) ;) }))) (expression_statement "local_c8 = local_c8 + iVar18;" (assignment_expression "local_c8 = local_c8 + iVar18" identifier = (binary_expression "local_c8 + iVar18" identifier + identifier)) ;) (expression_statement "bVar11 = 4;" (assignment_expression "bVar11 = 4" identifier = number_literal) ;) (expression_statement "local_c0 = local_c0 + iVar18;" (assignment_expression "local_c0 = local_c0 + iVar18" identifier = (binary_expression "local_c0 + iVar18" identifier + identifier)) ;) }))))) (expression_statement "iVar18 = param_2[6];" (assignment_expression "iVar18 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4 = 0xb6d;" (assignment_expression "local_a4 = 0xb6d" identifier = number_literal) ;) (expression_statement "iVar28 = param_2[7];" (assignment_expression "iVar28 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (expression_statement "local_a0 = 0xb6d;" (assignment_expression "local_a0 = 0xb6d" identifier = number_literal) ;) (expression_statement "sVar37 = uVar17 * iVar28;" (assignment_expression "sVar37 = uVar17 * iVar28" identifier = (binary_expression "uVar17 * iVar28" identifier * identifier)) ;) (expression_statement "local_128 = local_c8 + sVar37;" (assignment_expression "local_128 = local_c8 + sVar37" identifier = (binary_expression "local_c8 + sVar37" identifier + identifier)) ;) (if_statement "if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" if (parenthesized_expression "((uint)param_2[0x77] < 2)" ( (binary_expression "(uint)param_2[0x77] < 2" (cast_expression "(uint)param_2[0x77]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0x77]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }" { (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" identifier = (cast_expression "(uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" identifier (argument_list "(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" ( (binary_expression "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50" (parenthesized_expression "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (binary_expression "(float)*(double *)(param_2 + 0x7c) * DAT_0029f71c" (cast_expression "(float)*(double *)(param_2 + 0x7c)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7c)" * (cast_expression "(double *)(param_2 + 0x7c)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))) * identifier) )) / (cast_expression "(float)_DAT_002b7d50" ( (type_descriptor "float" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_a4 = local_e4;" (assignment_expression "local_a4 = local_e4" identifier = identifier) ;) (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" identifier = (cast_expression "(uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" identifier (argument_list "((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" ( (binary_expression "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50" (parenthesized_expression "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (binary_expression "DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)" identifier * (cast_expression "(float)*(double *)(param_2 + 0x7e)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7e)" * (cast_expression "(double *)(param_2 + 0x7e)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7e)" ( (binary_expression "param_2 + 0x7e" identifier + number_literal) )))))) )) / (cast_expression "(float)_DAT_002b7d50" ( (type_descriptor "float" primitive_type) ) identifier)) )))))) ;) (expression_statement "local_a0 = local_e4;" (assignment_expression "local_a0 = local_e4" identifier = identifier) ;) }) (else_clause "else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" else (if_statement "if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" if (parenthesized_expression "(param_2[0x77] == 2)" ( (binary_expression "param_2[0x77] == 2" (subscript_expression "param_2[0x77]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" identifier = (cast_expression "(uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" identifier (argument_list "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" ( (binary_expression "(float)*(double *)(param_2 + 0x7c) * DAT_0029f71c" (cast_expression "(float)*(double *)(param_2 + 0x7c)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7c)" * (cast_expression "(double *)(param_2 + 0x7c)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7c)" ( (binary_expression "param_2 + 0x7c" identifier + number_literal) ))))) * identifier) )))))) ;) (expression_statement "local_a4 = local_e4;" (assignment_expression "local_a4 = local_e4" identifier = identifier) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" identifier = (cast_expression "(uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" identifier (argument_list "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" ( (binary_expression "DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)" identifier * (cast_expression "(float)*(double *)(param_2 + 0x7e)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x7e)" * (cast_expression "(double *)(param_2 + 0x7e)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x7e)" ( (binary_expression "param_2 + 0x7e" identifier + number_literal) )))))) )))))) ;) (expression_statement "local_a0 = local_e4;" (assignment_expression "local_a0 = local_e4" identifier = identifier) ;) })))) (expression_statement "uVar27 = iVar18 + 0x100U;" (assignment_expression "uVar27 = iVar18 + 0x100U" identifier = (binary_expression "iVar18 + 0x100U" identifier + number_literal)) ;) (if_statement "if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }" if (parenthesized_expression "(iVar18 + 0x100U < uVar17)" ( (binary_expression "iVar18 + 0x100U < uVar17" (binary_expression "iVar18 + 0x100U" identifier + number_literal) < identifier) )) (compound_statement "{\n        uVar27 = uVar17;\n      }" { (expression_statement "uVar27 = uVar17;" (assignment_expression "uVar27 = uVar17" identifier = identifier) ;) })) (expression_statement "local_b8 = iVar18;" (assignment_expression "local_b8 = iVar18" identifier = identifier) ;) (expression_statement "local_b4 = iVar28;" (assignment_expression "local_b4 = iVar28" identifier = identifier) ;) (expression_statement "local_a8 = sVar37;" (assignment_expression "local_a8 = sVar37" identifier = identifier) ;) (expression_statement "local_88 = local_144;" (assignment_expression "local_88 = local_144" identifier = identifier) ;) (expression_statement "local_124 = AcquireVirtualMemory(iVar28,uVar27);" (assignment_expression "local_124 = AcquireVirtualMemory(iVar28,uVar27)" identifier = (call_expression "AcquireVirtualMemory(iVar28,uVar27)" identifier (argument_list "(iVar28,uVar27)" ( identifier , identifier )))) ;) (expression_statement "piVar35 = param_2;" (assignment_expression "piVar35 = param_2" identifier = identifier) ;) (if_statement "if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }" if (parenthesized_expression "(local_124 == 0)" ( (binary_expression "local_124 == 0" identifier == number_literal) )) (compound_statement "{\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }" { (expression_statement "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);" (call_expression "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" identifier (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , number_literal , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" while (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" ( (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" identifier = identifier) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" { (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" identifier = (cast_expression "(int *)piVar8[0xccf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0xccf]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_001d3a2a;" goto statement_identifier ;) })) (expression_statement "local_168 = (char *)GetVirtualMemoryBlob(local_124);" (assignment_expression "local_168 = (char *)GetVirtualMemoryBlob(local_124)" identifier = (cast_expression "(char *)GetVirtualMemoryBlob(local_124)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "GetVirtualMemoryBlob(local_124)" identifier (argument_list "(local_124)" ( identifier ))))) ;) (expression_statement "memset(local_168,0,sVar37);" (call_expression "memset(local_168,0,sVar37)" identifier (argument_list "(local_168,0,sVar37)" ( identifier , number_literal , identifier ))) ;) (expression_statement "uVar7 = CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar7 = CONCAT11(uStack_17b,local_17c)" identifier = (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier )))) ;) (switch_statement "switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }" switch (parenthesized_expression "(uVar7)" ( identifier )) (compound_statement "{\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }" { (case_statement "default:\n        goto LAB_001d23a7;" default : (goto_statement "goto LAB_001d23a7;" goto statement_identifier ;)) (case_statement "case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;" case number_literal : (if_statement "if (param_2[7] < 1) break;" if (parenthesized_expression "(param_2[7] < 1)" ( (binary_expression "param_2[7] < 1" (subscript_expression "param_2[7]" identifier [ number_literal ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "iStack_148 = 0;" (assignment_expression "iStack_148 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);" do (compound_statement "{\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" ( (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);" do (compound_statement "{\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            }" { (expression_statement "uVar27 = uVar27 * 2;" (assignment_expression "uVar27 = uVar27 * 2" identifier = (binary_expression "uVar27 * 2" identifier * number_literal)) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" * (cast_expression "(int *)(param_2[0xaa] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x40)" ( (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" * (cast_expression "(int *)(param_2[0xaa] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x44)" ( (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar34 = (uint)NAN(dVar47);" (assignment_expression "uVar34 = (uint)NAN(dVar47)" identifier = (cast_expression "(uint)NAN(dVar47)" ( (type_descriptor "uint" type_identifier) ) (call_expression "NAN(dVar47)" identifier (argument_list "(dVar47)" ( identifier ))))) ;) (if_statement "if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }" if (parenthesized_expression "(dVar47 != 0.0)" ( (binary_expression "dVar47 != 0.0" identifier != number_literal) )) (compound_statement "{\n                  uVar34 = 1;\n                }" { (expression_statement "uVar34 = 1;" (assignment_expression "uVar34 = 1" identifier = number_literal) ;) })) (expression_statement "uVar27 = uVar27 | uVar34;" (assignment_expression "uVar27 = uVar27 | uVar34" identifier = (binary_expression "uVar27 | uVar34" identifier | identifier)) ;) })) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (if_statement "if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }" if (parenthesized_expression "(iVar39 == 8)" ( (binary_expression "iVar39 == 8" identifier == number_literal) )) (compound_statement "{\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "*local_164 = (char)uVar27;" (assignment_expression "*local_164 = (char)uVar27" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) }) while (parenthesized_expression "(iVar22 < iVar19)" ( (binary_expression "iVar22 < iVar19" identifier < identifier) )) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }" if (parenthesized_expression "(iVar39 != 0)" ( (binary_expression "iVar39 != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }" { (expression_statement "pcVar46 = local_164 + 1;" (assignment_expression "pcVar46 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));" (assignment_expression "*local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f))" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)(uVar27 << (8U - (char)iVar39 & 0x1f))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar27 << (8U - (char)iVar39 & 0x1f))" ( (binary_expression "uVar27 << (8U - (char)iVar39 & 0x1f)" identifier << (parenthesized_expression "(8U - (char)iVar39 & 0x1f)" ( (binary_expression "8U - (char)iVar39 & 0x1f" (binary_expression "8U - (char)iVar39" number_literal - (cast_expression "(char)iVar39" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) ))) )))) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) })) })) (expression_statement "iVar14 = iVar19 + 0xe;" (assignment_expression "iVar14 = iVar19 + 0xe" identifier = (binary_expression "iVar19 + 0xe" identifier + number_literal)) ;) (if_statement "if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }" if (parenthesized_expression "(-1 < iVar19 + 7)" ( (binary_expression "-1 < iVar19 + 7" number_literal < (binary_expression "iVar19 + 7" identifier + number_literal)) )) (compound_statement "{\n            iVar14 = iVar19 + 7;\n          }" { (expression_statement "iVar14 = iVar19 + 7;" (assignment_expression "iVar14 = iVar19 + 7" identifier = (binary_expression "iVar19 + 7" identifier + number_literal)) ;) })) (if_statement "if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }" if (parenthesized_expression "(iVar14 >> 3 < (int)uVar17)" ( (binary_expression "iVar14 >> 3 < (int)uVar17" (binary_expression "iVar14 >> 3" identifier >> number_literal) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));" do (compound_statement "{\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            }" { (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)))" ( (binary_expression "pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3))" identifier != (binary_expression "pcVar46 + (uVar17 - (iVar14 >> 3))" identifier + (parenthesized_expression "(uVar17 - (iVar14 >> 3))" ( (binary_expression "uVar17 - (iVar14 >> 3)" identifier - (parenthesized_expression "(iVar14 >> 3)" ( (binary_expression "iVar14 >> 3" identifier >> number_literal) ))) )))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier (argument_list "(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_14c;" (assignment_expression "bVar42 = 0xfffffffe < local_14c" identifier = (binary_expression "0xfffffffe < local_14c" number_literal < identifier)) ;) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "iStack_148 = iStack_148 + (uint)bVar42;" (assignment_expression "iStack_148 = iStack_148 + (uint)bVar42" identifier = (binary_expression "iStack_148 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar16 < iVar14)" ( (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;)) (case_statement "case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "iStack_148 = 0;" (assignment_expression "iStack_148 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" ( (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }" { (expression_statement "bVar42 = false;" (assignment_expression "bVar42 = false" identifier = false) ;) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);" do (compound_statement "{\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              }" { (expression_statement "uVar27 = uVar27 << 4;" (assignment_expression "uVar27 = uVar27 << 4" identifier = (binary_expression "uVar27 << 4" identifier << number_literal)) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" * (cast_expression "(int *)(param_2[0xaa] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x40)" ( (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }" { (expression_statement "local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));" (assignment_expression "local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier = (cast_expression "(uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier (argument_list "(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" * (cast_expression "(int *)(param_2[0xaa] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x44)" ( (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))) )))))) ;) (expression_statement "uVar27 = uVar27 | local_e4 & 0xf;" (assignment_expression "uVar27 = uVar27 | local_e4 & 0xf" identifier = (binary_expression "uVar27 | local_e4 & 0xf" identifier | (binary_expression "local_e4 & 0xf" identifier & number_literal))) ;) })) (expression_statement "bVar42 = !bVar42;" (assignment_expression "bVar42 = !bVar42" identifier = (unary_expression "!bVar42" ! identifier)) ;) (if_statement "if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }" if (parenthesized_expression "(!bVar42)" ( (unary_expression "!bVar42" ! identifier) )) (compound_statement "{\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }" { (expression_statement "*local_164 = (char)uVar27;" (assignment_expression "*local_164 = (char)uVar27" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)uVar27" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" identifier = (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar19 >> 8)" ( (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar19 >> 0x10)" ( (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) }) while (parenthesized_expression "(iVar39 < iVar19)" ( (binary_expression "iVar39 < iVar19" identifier < identifier) )) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }" if (parenthesized_expression "(bVar42)" ( identifier )) (compound_statement "{\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }" { (expression_statement "pcVar46 = local_164 + 1;" (assignment_expression "pcVar46 = local_164 + 1" identifier = (binary_expression "local_164 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = (char)(uVar27 << 4);" (assignment_expression "*local_164 = (char)(uVar27 << 4)" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)(uVar27 << 4)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar27 << 4)" ( (binary_expression "uVar27 << 4" identifier << number_literal) )))) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) })) })) (expression_statement "iVar14 = (iVar19 + 1) / 2;" (assignment_expression "iVar14 = (iVar19 + 1) / 2" identifier = (binary_expression "(iVar19 + 1) / 2" (parenthesized_expression "(iVar19 + 1)" ( (binary_expression "iVar19 + 1" identifier + number_literal) )) / number_literal)) ;) (if_statement "if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }" if (parenthesized_expression "(iVar14 < (int)uVar17)" ( (binary_expression "iVar14 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));" do (compound_statement "{\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              }" { (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar30 != pcVar46 + (uVar17 - iVar14))" ( (binary_expression "pcVar30 != pcVar46 + (uVar17 - iVar14)" identifier != (binary_expression "pcVar46 + (uVar17 - iVar14)" identifier + (parenthesized_expression "(uVar17 - iVar14)" ( (binary_expression "uVar17 - iVar14" identifier - identifier) )))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" identifier (argument_list "(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_14c;" (assignment_expression "bVar42 = 0xfffffffe < local_14c" identifier = (binary_expression "0xfffffffe < local_14c" number_literal < identifier)) ;) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "iStack_148 = iStack_148 + (uint)bVar42;" (assignment_expression "iStack_148 = iStack_148 + (uint)bVar42" identifier = (binary_expression "iStack_148 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar16 < iVar14)" ( (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;" case number_literal : (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar27,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;" (assignment_expression "pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar27 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar27 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar27 + param_2[7])" ( (binary_expression "~uVar27 + param_2[7]" (unary_expression "~uVar27" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (expression_statement "pcVar46 = pcVar38;" (assignment_expression "pcVar46 = pcVar38" identifier = identifier) ;) (if_statement "if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" if (parenthesized_expression "(param_2[6] < 1)" ( (binary_expression "param_2[6] < 1" (subscript_expression "param_2[6]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "pcVar30 = pcVar38;" (assignment_expression "pcVar30 = pcVar38" identifier = identifier) ;) }) (else_clause "else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" else (compound_statement "{\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" { (do_statement "do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);" do (compound_statement "{\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              }" { (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" * (cast_expression "(int *)(param_2[0xaa] + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x40)" ( (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }" { (expression_statement "cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));" (assignment_expression "cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier = (cast_expression "(char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" identifier (argument_list "(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" ( (pointer_expression "*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" * (cast_expression "(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" * (cast_expression "(int *)(param_2[0xaa] + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x44)" ( (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) )))) )))))) ;) })) (expression_statement "pcVar30 = pcVar46 + 1;" (assignment_expression "pcVar30 = pcVar46 + 1" identifier = (binary_expression "pcVar46 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar46 = cVar24;" (assignment_expression "*pcVar46 = cVar24" (pointer_expression "*pcVar46" * identifier) = identifier) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = (int)pcVar30 - (int)pcVar38;" (assignment_expression "iVar19 = (int)pcVar30 - (int)pcVar38" identifier = (binary_expression "(int)pcVar30 - (int)pcVar38" (cast_expression "(int)pcVar30" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar38" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar46 = pcVar30;" (assignment_expression "pcVar46 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(iVar19 < param_2[6])" ( (binary_expression "iVar19 < param_2[6]" identifier < (subscript_expression "param_2[6]" identifier [ number_literal ])) )) ;) }))) (if_statement "if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }" if (parenthesized_expression "(iVar19 < (int)uVar17)" ( (binary_expression "iVar19 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }" { (expression_statement "pcVar46 = pcVar30;" (assignment_expression "pcVar46 = pcVar30" identifier = identifier) ;) (do_statement "do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));" do (compound_statement "{\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              }" { (expression_statement "pcVar38 = pcVar46 + 1;" (assignment_expression "pcVar38 = pcVar46 + 1" identifier = (binary_expression "pcVar46 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar46 = '\0';" (assignment_expression "*pcVar46 = '\0'" (pointer_expression "*pcVar46" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar46 = pcVar38;" (assignment_expression "pcVar46 = pcVar38" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar38 != pcVar30 + (uVar17 - iVar19))" ( (binary_expression "pcVar38 != pcVar30 + (uVar17 - iVar19)" identifier != (binary_expression "pcVar30 + (uVar17 - iVar19)" identifier + (parenthesized_expression "(uVar17 - iVar19)" ( (binary_expression "uVar17 - iVar19" identifier - identifier) )))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0)" identifier (argument_list "(param_2,"Save/Image",local_164,local_160,iVar14,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_164;" (assignment_expression "bVar42 = 0xfffffffe < local_164" identifier = (binary_expression "0xfffffffe < local_164" number_literal < identifier)) ;) (expression_statement "local_164 = (char *)((int)local_164 + 1);" (assignment_expression "local_164 = (char *)((int)local_164 + 1)" identifier = (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "local_160 = local_160 + (uint)bVar42;" (assignment_expression "local_160 = local_160 + (uint)bVar42" identifier = (binary_expression "local_160 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar27 < iVar14)" ( (binary_expression "(int)uVar27 < iVar14" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (labeled_statement "LAB_001d23a7:\n        bVar42 = bVar11 != 2;" statement_identifier : (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;)) (expression_statement "bVar43 = CONCAT11(uStack_17b,local_17c) == 8;" (assignment_expression "bVar43 = CONCAT11(uStack_17b,local_17c) == 8" identifier = (binary_expression "CONCAT11(uStack_17b,local_17c) == 8" (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) == number_literal)) ;) (expression_statement "bVar29 = bVar43 && bVar42;" (assignment_expression "bVar29 = bVar43 && bVar42" identifier = (binary_expression "bVar43 && bVar42" identifier && identifier)) ;) (if_statement "if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;" if (parenthesized_expression "((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10))" ( (binary_expression "(!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)" (parenthesized_expression "(!bVar43 || !bVar42)" ( (binary_expression "!bVar43 || !bVar42" (unary_expression "!bVar43" ! identifier) || (unary_expression "!bVar42" ! identifier)) )) || (parenthesized_expression "(bVar42 = bVar29, *param_1 == 0x10)" ( (comma_expression "bVar42 = bVar29, *param_1 == 0x10" (assignment_expression "bVar42 = bVar29" identifier = identifier) , (binary_expression "*param_1 == 0x10" (pointer_expression "*param_1" * identifier) == number_literal)) ))) )) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;)) (expression_statement "iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);" (assignment_expression "iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2)" identifier = (call_expression "AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2)" identifier (argument_list "(uVar16 * 8 + 6,param_2[7] + 2)" ( (binary_expression "uVar16 * 8 + 6" (binary_expression "uVar16 * 8" identifier * number_literal) + number_literal) , (binary_expression "param_2[7] + 2" (subscript_expression "param_2[7]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" { (expression_statement "puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);" (assignment_expression "puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14)" identifier = (cast_expression "(undefined2 *)GetVirtualMemoryBlob(iVar14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "GetVirtualMemoryBlob(iVar14)" identifier (argument_list "(iVar14)" ( identifier ))))) ;) (if_statement "if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" if (parenthesized_expression "(param_2[0xcd1] != -0x54535255)" ( (binary_expression "param_2[0xcd1] != -0x54535255" (subscript_expression "param_2[0xcd1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" { (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" identifier (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" ( (string_literal ""image->signature == MagickCoreSignature"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""EncodeImage"" " string_content ") ))) ;) })) (if_statement "if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }" if (parenthesized_expression "(param_2[0xcca] != 0)" ( (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }" { (expression_statement "LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);" (call_expression "LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6)" identifier (argument_list "(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""EncodeImage"" " string_content ") , number_literal , (pointer_expression "&DAT_002b6e4e" & identifier) , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) })) (if_statement "if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" if (parenthesized_expression "(puVar21 == (undefined2 *)0x0)" ( (binary_expression "puVar21 == (undefined2 *)0x0" identifier == (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" { (expression_statement "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");" (call_expression "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" identifier (argument_list "("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" ( (string_literal ""compressed_pixels != (unsigned char *) NULL"" " string_content ") , (string_literal ""coders/bmp.c"" " string_content ") , number_literal , (string_literal ""EncodeImage"" " string_content ") ))) ;) })) (expression_statement "local_164 = (char *)puVar21;" (assignment_expression "local_164 = (char *)puVar21" identifier = (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }" { (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" identifier = number_literal) ;) (expression_statement "iStack_130 = 0;" (assignment_expression "iStack_130 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);" do (compound_statement "{\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" identifier = identifier) ;) (if_statement "if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }" { (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 1" identifier = number_literal) ;) (if_statement "if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }" if (parenthesized_expression "(1 < uVar17)" ( (binary_expression "1 < uVar17" number_literal < identifier) )) (compound_statement "{\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }" { (do_statement "do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);" do (compound_statement "{\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  }" { (if_statement "if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" if (parenthesized_expression "(*local_168 == local_168[1])" ( (binary_expression "*local_168 == local_168[1]" (pointer_expression "*local_168" * identifier) == (subscript_expression "local_168[1]" identifier [ number_literal ])) )) (compound_statement "{\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }" { (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 1" identifier = number_literal) ;) (expression_statement "pcVar46 = local_168 + 2;" (assignment_expression "pcVar46 = local_168 + 2" identifier = (binary_expression "local_168 + 2" identifier + number_literal)) ;) (do_statement "do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);" do (compound_statement "{\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "iVar40 = iVar39 + iVar22;" (assignment_expression "iVar40 = iVar39 + iVar22" identifier = (binary_expression "iVar39 + iVar22" identifier + identifier)) ;) (if_statement "if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }" if (parenthesized_expression "(iVar22 == uVar17 - iVar39)" ( (binary_expression "iVar22 == uVar17 - iVar39" identifier == (binary_expression "uVar17 - iVar39" identifier - identifier)) )) (compound_statement "{\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }" { (expression_statement "pcVar38 = local_168 + iVar22;" (assignment_expression "pcVar38 = local_168 + iVar22" identifier = (binary_expression "local_168 + iVar22" identifier + identifier)) ;) (break_statement "break;" break ;) })) (if_statement "if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }" if (parenthesized_expression "(iVar22 == 0xff)" ( (binary_expression "iVar22 == 0xff" identifier == number_literal) )) (compound_statement "{\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }" { (expression_statement "iVar22 = -1;" (assignment_expression "iVar22 = -1" identifier = number_literal) ;) (expression_statement "pcVar38 = local_168 + 0xff;" (assignment_expression "pcVar38 = local_168 + 0xff" identifier = (binary_expression "local_168 + 0xff" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar46 = pcVar38 + 1;" (assignment_expression "pcVar46 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar38 == *local_168)" ( (binary_expression "*pcVar38 == *local_168" (pointer_expression "*pcVar38" * identifier) == (pointer_expression "*local_168" * identifier)) )) ;) (expression_statement "*local_164 = (char)iVar22;" (assignment_expression "*local_164 = (char)iVar22" (pointer_expression "*local_164" * identifier) = (cast_expression "(char)iVar22" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar46 = (char *)((int)local_164 + 2);" (assignment_expression "pcVar46 = (char *)((int)local_164 + 2)" identifier = (cast_expression "(char *)((int)local_164 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 2)" ( (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" * (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "iVar39 = iVar40;" (assignment_expression "iVar39 = iVar40" identifier = identifier) ;) (expression_statement "local_168 = pcVar38;" (assignment_expression "local_168 = pcVar38" identifier = identifier) ;) (if_statement "if ((int)uVar17 <= iVar40) goto LAB_001d2581;" if (parenthesized_expression "((int)uVar17 <= iVar40)" ( (binary_expression "(int)uVar17 <= iVar40" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_001d2581;" goto statement_identifier ;)) }) (else_clause "else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" else (compound_statement "{\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" { (expression_statement "pcVar38 = local_168 + 1;" (assignment_expression "pcVar38 = local_168 + 1" identifier = (binary_expression "local_168 + 1" identifier + number_literal)) ;) (expression_statement "*local_164 = 1;" (assignment_expression "*local_164 = 1" (pointer_expression "*local_164" * identifier) = number_literal) ;) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" * (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "iVar39 = iVar22;" (assignment_expression "iVar39 = iVar22" identifier = identifier) ;) }))) (expression_statement "local_164 = (char *)((int)local_164 + 2);" (assignment_expression "local_164 = (char *)((int)local_164 + 2)" identifier = (cast_expression "(char *)((int)local_164 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 2)" ( (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar22 = iVar39 + 1;" (assignment_expression "iVar22 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "local_168 = pcVar38;" (assignment_expression "local_168 = pcVar38" identifier = identifier) ;) }) while (parenthesized_expression "(iVar22 < (int)uVar17)" ( (binary_expression "iVar22 < (int)uVar17" identifier < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "*local_164 = 1;" (assignment_expression "*local_164 = 1" (pointer_expression "*local_164" * identifier) = number_literal) ;) (expression_statement "pcVar46 = (char *)((int)local_164 + 2);" (assignment_expression "pcVar46 = (char *)((int)local_164 + 2)" identifier = (cast_expression "(char *)((int)local_164 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 2)" ( (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" * (cast_expression "(char *)((int)local_164 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_164 + 1)" ( (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*local_168" * identifier)) ;) (expression_statement "local_168 = local_168 + 1;" (assignment_expression "local_168 = local_168 + 1" identifier = (binary_expression "local_168 + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);" statement_identifier : (expression_statement "local_164 = (char *)((int)pcVar46 + 2);" (assignment_expression "local_164 = (char *)((int)pcVar46 + 2)" identifier = (cast_expression "(char *)((int)pcVar46 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pcVar46 + 2)" ( (binary_expression "(int)pcVar46 + 2" (cast_expression "(int)pcVar46" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "*(undefined2 *)pcVar46 = 0;" (assignment_expression "*(undefined2 *)pcVar46 = 0" (pointer_expression "*(undefined2 *)pcVar46" * (cast_expression "(undefined2 *)pcVar46" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);" (assignment_expression "iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" identifier (argument_list "(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , (subscript_expression "param_2[7]" identifier [ number_literal ]) , number_literal )))) ;) (if_statement "if (iVar39 == 0) break;" if (parenthesized_expression "(iVar39 == 0)" ( (binary_expression "iVar39 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_134;" (assignment_expression "bVar42 = 0xfffffffe < local_134" identifier = (binary_expression "0xfffffffe < local_134" number_literal < identifier)) ;) (expression_statement "local_134 = local_134 + 1;" (assignment_expression "local_134 = local_134 + 1" identifier = (binary_expression "local_134 + 1" identifier + number_literal)) ;) (expression_statement "iStack_130 = iStack_130 + (uint)bVar42;" (assignment_expression "iStack_130 = iStack_130 + (uint)bVar42" identifier = (binary_expression "iStack_130 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar19 < param_2[7])" ( (binary_expression "iVar19 < param_2[7]" identifier < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) ;) })) (expression_statement "local_164[0] = '\0';" (assignment_expression "local_164[0] = '\0'" (subscript_expression "local_164[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_164[1] = '\x01';" (assignment_expression "local_164[1] = '\x01'" (subscript_expression "local_164[1]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_a8 = (int)local_164 + (2 - (int)puVar21);" (assignment_expression "local_a8 = (int)local_164 + (2 - (int)puVar21)" identifier = (binary_expression "(int)local_164 + (2 - (int)puVar21)" (cast_expression "(int)local_164" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(2 - (int)puVar21)" ( (binary_expression "2 - (int)puVar21" number_literal - (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_128 = local_a8 + local_c8;" (assignment_expression "local_128 = local_a8 + local_c8" identifier = (binary_expression "local_a8 + local_c8" identifier + identifier)) ;) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "local_ac = 1;" (assignment_expression "local_ac = 1" identifier = number_literal) ;) (expression_statement "local_124 = iVar14;" (assignment_expression "local_124 = iVar14" identifier = identifier) ;) (if_statement "if (param_2[0xcca] == 0) goto LAB_001d14a8;" if (parenthesized_expression "(param_2[0xcca] == 0)" ( (binary_expression "param_2[0xcca] == 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001d14a8;" goto statement_identifier ;)) (goto_statement "goto LAB_001d2640;" goto statement_identifier ;) })) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);" (call_expression "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" identifier (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , number_literal , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" while (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" ( (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" identifier = identifier) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" { (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" identifier = (cast_expression "(int *)piVar8[0xccf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0xccf]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_001d3a2a;" goto statement_identifier ;)) (case_statement "case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" identifier = number_literal) ;) (expression_statement "local_104 = 0;" (assignment_expression "local_104 = 0" identifier = number_literal) ;) (expression_statement "iStack_100 = 0;" (assignment_expression "iStack_100 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);" do (compound_statement "{\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          }" { (expression_statement "iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);" (assignment_expression "iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,local_14c,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar19 == 0) break;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (expression_statement "iVar22 = param_2[6];" (assignment_expression "iVar22 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);" (assignment_expression "puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" identifier = (cast_expression "(ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" ( (binary_expression "local_168 + ((iVar39 + -1) - local_14c) * uVar17" identifier + (binary_expression "((iVar39 + -1) - local_14c) * uVar17" (parenthesized_expression "((iVar39 + -1) - local_14c)" ( (binary_expression "(iVar39 + -1) - local_14c" (parenthesized_expression "(iVar39 + -1)" ( (binary_expression "iVar39 + -1" identifier + number_literal) )) - identifier) )) * identifier)) )))) ;) (expression_statement "puVar32 = puVar20;" (assignment_expression "puVar32 = puVar20" identifier = identifier) ;) (if_statement "if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }" if (parenthesized_expression "(0 < iVar22)" ( (binary_expression "0 < iVar22" number_literal < identifier) )) (compound_statement "{\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }" { (expression_statement "iVar40 = param_2[0xa6];" (assignment_expression "iVar40 = param_2[0xa6]" identifier = (subscript_expression "param_2[0xa6]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = param_2[0xaa];" (assignment_expression "iVar3 = param_2[0xaa]" identifier = (subscript_expression "param_2[0xaa]" identifier [ number_literal ])) ;) (expression_statement "puVar32 = puVar20 + iVar22;" (assignment_expression "puVar32 = puVar20 + iVar22" identifier = (binary_expression "puVar20 + iVar22" identifier + identifier)) ;) (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" identifier = (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (do_statement "do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);" do (compound_statement "{\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              }" { (expression_statement "dVar47 = *(double *)(iVar19 + iVar4 * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + iVar4 * 8)" identifier = (pointer_expression "*(double *)(iVar19 + iVar4 * 8)" * (cast_expression "(double *)(iVar19 + iVar4 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + iVar4 * 8)" ( (binary_expression "iVar19 + iVar4 * 8" identifier + (binary_expression "iVar4 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" if (parenthesized_expression "(iVar14 == 3)" ( (binary_expression "iVar14 == 3" identifier == number_literal) )) (compound_statement "{\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }" { (expression_statement "uVar12 = 0xf000;" (assignment_expression "uVar12 = 0xf000" identifier = number_literal) ;) (if_statement "if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }" if (parenthesized_expression "(*(int *)(iVar3 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar3 + 0x34) != 0" (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }" { (expression_statement "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);" (assignment_expression "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x38) * 8" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }" { (expression_statement "dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar2 * (double)DAT_002a9b74)" ( (binary_expression "dVar2 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }" if (parenthesized_expression "(dVar2 < (double)DAT_0029f714)" ( (binary_expression "dVar2 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }" { (expression_statement "dVar2 = dVar2 + (double)DAT_0029f124;" (assignment_expression "dVar2 = dVar2 + (double)DAT_0029f124" identifier = (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar2)" ( (binary_expression "(double)DAT_0029f134 <= dVar2" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 - (double)DAT_0029f134)" identifier (argument_list "(dVar2 - (double)DAT_0029f134)" ( (binary_expression "dVar2 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2)" identifier (argument_list "(dVar2)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xc);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xc)" identifier = (call_expression "(ushort)(local_e4 << 0xc)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xc)" ( (binary_expression "local_e4 << 0xc" identifier << number_literal) )))) ;) }) (else_clause "else {\n                        uVar12 = 0xf000;\n                      }" else (compound_statement "{\n                        uVar12 = 0xf000;\n                      }" { (expression_statement "uVar12 = 0xf000;" (assignment_expression "uVar12 = 0xf000" identifier = number_literal) ;) }))) })) })) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" ( (binary_expression "dVar47 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      uVar12 = 0xff00;\n                    }" { (expression_statement "uVar12 = 0xff00;" (assignment_expression "uVar12 = 0xff00" identifier = number_literal) ;) }) (else_clause "else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" else (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" else (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 8);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 8)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 8)" identifier | (call_expression "(ushort)(local_e4 << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 8)" ( (binary_expression "local_e4 << 8" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" ( (binary_expression "dVar47 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      uVar12 = 0xfff0;\n                    }" { (expression_statement "uVar12 = 0xfff0;" (assignment_expression "uVar12 = 0xfff0" identifier = number_literal) ;) }) (else_clause "else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" else (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" else (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 4);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 4)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 4)" identifier | (call_expression "(ushort)(local_e4 << 4)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 4)" ( (binary_expression "local_e4 << 4" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" ( (binary_expression "dVar47 * (double)DAT_002a9b74" identifier * (cast_expression "(double)DAT_002a9b74" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" ( (binary_expression "dVar47 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f134)" ( (binary_expression "dVar47 < (double)DAT_0029f134" identifier < (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" { (labeled_statement "LAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);" statement_identifier : (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;)) }) (else_clause "else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" else (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) (goto_statement "goto LAB_001d21be;" goto statement_identifier ;) })) (labeled_statement "LAB_001d2eba:\n                    uVar12 = 0xffff;" statement_identifier : (expression_statement "uVar12 = 0xffff;" (assignment_expression "uVar12 = 0xffff" identifier = number_literal) ;)) })) }) (else_clause "else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" else (compound_statement "{\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" if (parenthesized_expression "(iVar14 == 2)" ( (binary_expression "iVar14 == 2" identifier == number_literal) )) (compound_statement "{\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }" { (if_statement "if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" { (expression_statement "uVar12 = 0xf800;" (assignment_expression "uVar12 = 0xf800" identifier = number_literal) ;) (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" ( (binary_expression "dVar47 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xb);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xb)" identifier = (call_expression "(ushort)(local_e4 << 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xb)" ( (binary_expression "local_e4 << 0xb" identifier << number_literal) )))) ;) })) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002cc81c)" ( (binary_expression "dVar47 * (double)DAT_002cc81c" identifier * (cast_expression "(double)DAT_002cc81c" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar12 = 0xffe0;\n                      }" { (expression_statement "uVar12 = 0xffe0;" (assignment_expression "uVar12 = 0xffe0" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" else (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 5);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 5)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 5)" identifier | (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 5)" ( (binary_expression "local_e4 << 5" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" if (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" ( (binary_expression "dVar47 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;" if (parenthesized_expression "(dVar47 < (double)DAT_0029f134)" ( (binary_expression "dVar47 < (double)DAT_0029f134" identifier < (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001d2faa;" goto statement_identifier ;)) (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (goto_statement "goto LAB_001d21be;" goto statement_identifier ;) })) (goto_statement "goto LAB_001d2eba;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" else (compound_statement "{\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }" if (parenthesized_expression "((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0))" ( (binary_expression "(iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)" (parenthesized_expression "(iVar14 == 4)" ( (binary_expression "iVar14 == 4" identifier == number_literal) )) && (parenthesized_expression "(uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)" ( (comma_expression "uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0" (assignment_expression "uVar12 = 0x8000" identifier = number_literal) , (binary_expression "*(int *)(iVar3 + 0x34) != 0" (pointer_expression "*(int *)(iVar3 + 0x34)" * (cast_expression "(int *)(iVar3 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x34)" ( (binary_expression "iVar3 + 0x34" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }" { (expression_statement "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);" (assignment_expression "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x38) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x38) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x38) * 8" (pointer_expression "*(int *)(iVar3 + 0x38)" * (cast_expression "(int *)(iVar3 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x38)" ( (binary_expression "iVar3 + 0x38" identifier + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }" { (expression_statement "dVar2 = dVar2 / (double)DAT_0029f710;" (assignment_expression "dVar2 = dVar2 / (double)DAT_0029f710" identifier = (binary_expression "dVar2 / (double)DAT_0029f710" identifier / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }" if (parenthesized_expression "(dVar2 < (double)DAT_0029f714)" ( (binary_expression "dVar2 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }" { (expression_statement "dVar2 = dVar2 + (double)DAT_0029f124;" (assignment_expression "dVar2 = dVar2 + (double)DAT_0029f124" identifier = (binary_expression "dVar2 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar2)" ( (binary_expression "(double)DAT_0029f134 <= dVar2" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 - (double)DAT_0029f134)" identifier (argument_list "(dVar2 - (double)DAT_0029f134)" ( (binary_expression "dVar2 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" else (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2)" identifier (argument_list "(dVar2)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xf);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xf)" identifier = (call_expression "(ushort)(local_e4 << 0xf)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 0xf)" ( (binary_expression "local_e4 << 0xf" identifier << number_literal) )))) ;) }) (else_clause "else {\n                          uVar12 = 0x8000;\n                        }" else (compound_statement "{\n                          uVar12 = 0x8000;\n                        }" { (expression_statement "uVar12 = 0x8000;" (assignment_expression "uVar12 = 0x8000" identifier = number_literal) ;) }))) })) })) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar12 = 0xfc00;\n                      }" { (expression_statement "uVar12 = 0xfc00;" (assignment_expression "uVar12 = 0xfc00" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" else (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 10);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 10)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 10)" identifier | (call_expression "(ushort)(local_e4 << 10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 10)" ( (binary_expression "local_e4 << 10" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar12 = 0xffe0;\n                      }" { (expression_statement "uVar12 = 0xffe0;" (assignment_expression "uVar12 = 0xffe0" identifier = number_literal) ;) }) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" else (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" { (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" else (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 5);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 5)" identifier = (binary_expression "uVar12 | (ushort)(local_e4 << 5)" identifier | (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_e4 << 5)" ( (binary_expression "local_e4 << 5" identifier << number_literal) ))))) ;) }))) })) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" * (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" ( (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" identifier + (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) * number_literal)) ))))) ;) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }" { (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" identifier = (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" ( (binary_expression "dVar47 * (double)DAT_002c5ed8" identifier * (cast_expression "(double)DAT_002c5ed8" ( (type_descriptor "double" primitive_type) ) identifier)) )) / (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;" if (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" ( (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_001d2eba;" goto statement_identifier ;)) (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" identifier = (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" ( (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" { (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" identifier (argument_list "(dVar47 - (double)DAT_0029f134)" ( (binary_expression "dVar47 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" else (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" { (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47)" identifier = (cast_expression "(ushort)(longlong)ROUND(dVar47)" ( (type_descriptor "ushort" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47)" identifier (argument_list "(dVar47)" ( identifier )))))) ;) }))) (labeled_statement "LAB_001d21be:\n                      uVar12 = uVar12 | uVar26;" statement_identifier : (expression_statement "uVar12 = uVar12 | uVar26;" (assignment_expression "uVar12 = uVar12 | uVar26" identifier = (binary_expression "uVar12 | uVar26" identifier | identifier)) ;)) })) }))) }))) (expression_statement "*puVar20 = uVar12;" (assignment_expression "*puVar20 = uVar12" (pointer_expression "*puVar20" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + iVar40 * 8;" (assignment_expression "iVar19 = iVar19 + iVar40 * 8" identifier = (binary_expression "iVar19 + iVar40 * 8" identifier + (binary_expression "iVar40 * 8" identifier * number_literal))) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar20 != puVar32)" ( (binary_expression "puVar20 != puVar32" identifier != identifier) )) ;) })) (if_statement "if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }" if (parenthesized_expression "(uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0)" ( (binary_expression "uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0" (binary_expression "uVar17 != iVar22 * 2" identifier != (binary_expression "iVar22 * 2" identifier * number_literal)) && (binary_expression "SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0" (call_expression "SBORROW4(uVar17,iVar22 * 2)" identifier (argument_list "(uVar17,iVar22 * 2)" ( identifier , (binary_expression "iVar22 * 2" identifier * number_literal) ))) == (binary_expression "(int)(uVar17 + iVar22 * -2) < 0" (cast_expression "(int)(uVar17 + iVar22 * -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar17 + iVar22 * -2)" ( (binary_expression "uVar17 + iVar22 * -2" identifier + (binary_expression "iVar22 * -2" identifier * number_literal)) ))) < number_literal))) )) (compound_statement "{\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }" { (expression_statement "puVar20 = puVar32;" (assignment_expression "puVar20 = puVar32" identifier = identifier) ;) (do_statement "do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));" do (compound_statement "{\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              }" { (expression_statement "puVar33 = (ushort *)((int)puVar20 + 1);" (assignment_expression "puVar33 = (ushort *)((int)puVar20 + 1)" identifier = (cast_expression "(ushort *)((int)puVar20 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar20 + 1)" ( (binary_expression "(int)puVar20 + 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)puVar20 = '\0';" (assignment_expression "*(char *)puVar20 = '\0'" (pointer_expression "*(char *)puVar20" * (cast_expression "(char *)puVar20" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar20 = puVar33;" (assignment_expression "puVar20 = puVar33" identifier = identifier) ;) }) while (parenthesized_expression "(puVar33 != puVar32 + (uVar16 * 2 - iVar22))" ( (binary_expression "puVar33 != puVar32 + (uVar16 * 2 - iVar22)" identifier != (binary_expression "puVar32 + (uVar16 * 2 - iVar22)" identifier + (parenthesized_expression "(uVar16 * 2 - iVar22)" ( (binary_expression "uVar16 * 2 - iVar22" (binary_expression "uVar16 * 2" identifier * number_literal) - identifier) )))) )) ;) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (if_statement "if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }" { (expression_statement "iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);" (assignment_expression "iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" identifier (argument_list "(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar19 == 0) break;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" identifier = (binary_expression "local_14c + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < local_104;" (assignment_expression "bVar42 = 0xfffffffe < local_104" identifier = (binary_expression "0xfffffffe < local_104" number_literal < identifier)) ;) (expression_statement "local_104 = local_104 + 1;" (assignment_expression "local_104 = local_104 + 1" identifier = (binary_expression "local_104 + 1" identifier + number_literal)) ;) (expression_statement "iStack_100 = iStack_100 + (uint)bVar42;" (assignment_expression "iStack_100 = iStack_100 + (uint)bVar42" identifier = (binary_expression "iStack_100 + (uint)bVar42" identifier + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)local_14c < iVar39)" ( (binary_expression "(int)local_14c < iVar39" (cast_expression "(int)local_14c" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" case number_literal : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_184._4_4_ = 0;" (assignment_expression "local_184._4_4_ = 0" (field_expression "local_184._4_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" ( identifier , number_literal , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17" identifier = (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" identifier + (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" ( (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" ~ identifier) + (subscript_expression "param_2[7]" identifier [ number_literal ])) )) * identifier))) ;) (if_statement "if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);" do (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x20) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x20)" * (cast_expression "(int *)(param_2[0xaa] + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x20)" ( (binary_expression "param_2[0xaa] + 0x20" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*pcVar38 = cVar24;" (assignment_expression "*pcVar38 = cVar24" (pointer_expression "*pcVar38" * identifier) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x14) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x14)" * (cast_expression "(int *)(param_2[0xaa] + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x14)" ( (binary_expression "param_2[0xaa] + 0x14" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "pcVar46 = pcVar38 + 3;" (assignment_expression "pcVar46 = pcVar38 + 3" identifier = (binary_expression "pcVar38 + 3" identifier + number_literal)) ;) (expression_statement "pcVar38[1] = cVar24;" (assignment_expression "pcVar38[1] = cVar24" (subscript_expression "pcVar38[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 8) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 8) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 8)" * (cast_expression "(int *)(param_2[0xaa] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 8)" ( (binary_expression "param_2[0xaa] + 8" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "pcVar38[2] = cVar24;" (assignment_expression "pcVar38[2] = cVar24" (subscript_expression "pcVar38[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) }) while (parenthesized_expression "(iVar39 < iVar19)" ( (binary_expression "iVar39 < iVar19" identifier < identifier) )) ;) })) (if_statement "if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }" if (parenthesized_expression "(iVar19 * 3 < (int)uVar17)" ( (binary_expression "iVar19 * 3 < (int)uVar17" (binary_expression "iVar19 * 3" identifier * number_literal) < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }" { (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" identifier = identifier) ;) (do_statement "do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);" do (compound_statement "{\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              }" { (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" identifier = (binary_expression "pcVar38 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar30 != pcVar46 + uVar17 + iVar19 * -3)" ( (binary_expression "pcVar30 != pcVar46 + uVar17 + iVar19 * -3" identifier != (binary_expression "pcVar46 + uVar17 + iVar19 * -3" (binary_expression "pcVar46 + uVar17" identifier + identifier) + (binary_expression "iVar19 * -3" identifier * number_literal))) )) ;) })) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" identifier (argument_list "(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) , (field_expression "local_184._4_4_" identifier . field_identifier) , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1490;" goto statement_identifier ;)) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar42 = 0xfffffffe < (uint)local_184;" (assignment_expression "bVar42 = 0xfffffffe < (uint)local_184" identifier = (binary_expression "0xfffffffe < (uint)local_184" number_literal < (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "local_184._4_4_ = local_184._4_4_ + (uint)bVar42;" (assignment_expression "local_184._4_4_ = local_184._4_4_ + (uint)bVar42" (field_expression "local_184._4_4_" identifier . field_identifier) = (binary_expression "local_184._4_4_ + (uint)bVar42" (field_expression "local_184._4_4_" identifier . field_identifier) + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)uVar16 < iVar14)" ( (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;) (goto_statement "goto LAB_001d149a;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" case number_literal : (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" identifier = number_literal) ;) (expression_statement "iStack_178 = 0;" (assignment_expression "iStack_178 = 0" identifier = number_literal) ;) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" identifier . field_identifier) = number_literal) ;) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" if (parenthesized_expression "(0 < param_2[7])" ( (binary_expression "0 < param_2[7]" number_literal < (subscript_expression "param_2[7]" identifier [ number_literal ])) )) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" { (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);" do (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          }" { (expression_statement "iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3)" identifier = (call_expression "GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3)" identifier (argument_list "(param_2,0,(uint)local_184,param_2[6],1,param_3)" ( identifier , number_literal , (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) , (subscript_expression "param_2[6]" identifier [ number_literal ]) , number_literal , identifier )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (if_statement "if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }" if (parenthesized_expression "(0 < param_2[6])" ( (binary_expression "0 < param_2[6]" number_literal < (subscript_expression "param_2[6]" identifier [ number_literal ])) )) (compound_statement "{\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }" { (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (expression_statement "pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;" (assignment_expression "pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17" identifier = (binary_expression "local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17" identifier + (binary_expression "((iVar19 + -1) - (uint)local_184) * uVar17" (parenthesized_expression "((iVar19 + -1) - (uint)local_184)" ( (binary_expression "(iVar19 + -1) - (uint)local_184" (parenthesized_expression "(iVar19 + -1)" ( (binary_expression "iVar19 + -1" identifier + number_literal) )) - (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) )) * identifier))) ;) (do_statement "do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);" do (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x20) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x20)" * (cast_expression "(int *)(param_2[0xaa] + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x20)" ( (binary_expression "param_2[0xaa] + 0x20" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*pcVar46 = cVar24;" (assignment_expression "*pcVar46 = cVar24" (pointer_expression "*pcVar46" * identifier) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x14) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x14)" * (cast_expression "(int *)(param_2[0xaa] + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x14)" ( (binary_expression "param_2[0xaa] + 0x14" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "pcVar46[1] = cVar24;" (assignment_expression "pcVar46[1] = cVar24" (subscript_expression "pcVar46[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 8) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 8) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 8)" * (cast_expression "(int *)(param_2[0xaa] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 8)" ( (binary_expression "param_2[0xaa] + 8" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "pcVar46[2] = cVar24;" (assignment_expression "pcVar46[2] = cVar24" (subscript_expression "pcVar46[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (if_statement "if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }" if (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x34) != 0)" ( (binary_expression "*(int *)(param_2[0xaa] + 0x34) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x34)" * (cast_expression "(int *)(param_2[0xaa] + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x34)" ( (binary_expression "param_2[0xaa] + 0x34" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (compound_statement "{\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }" { (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" identifier = (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" * (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" ( (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8" identifier + (binary_expression "*(int *)(param_2[0xaa] + 0x38) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x38)" * (cast_expression "(int *)(param_2[0xaa] + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0xaa] + 0x38)" ( (binary_expression "param_2[0xaa] + 0x38" (subscript_expression "param_2[0xaa]" identifier [ number_literal ]) + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" if (parenthesized_expression "((double)DAT_002a7ff4 <= dVar47)" ( (binary_expression "(double)DAT_002a7ff4 <= dVar47" (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                      cVar24 = -1;\n                    }" { (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) }) (else_clause "else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" else (compound_statement "{\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" { (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "char" primitive_type) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) })) })) (expression_statement "pcVar46[3] = cVar24;" (assignment_expression "pcVar46[3] = cVar24" (subscript_expression "pcVar46[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" identifier = (binary_expression "iVar14 + param_2[0xa6] * 8" identifier + (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "pcVar46 = pcVar46 + 4;" (assignment_expression "pcVar46 = pcVar46 + 4" identifier = (binary_expression "pcVar46 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar39 < param_2[6])" ( (binary_expression "iVar39 < param_2[6]" identifier < (subscript_expression "param_2[6]" identifier [ number_literal ])) )) ;) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }" if (parenthesized_expression "(param_2[0xccf] == 0)" ( (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }" { (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" identifier (argument_list "(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" ( identifier , (string_literal ""Save/Image"" " string_content ") , (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) })) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" identifier . field_identifier) = (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier = (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) ;) (expression_statement "iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;" (assignment_expression "iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" identifier = (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) + number_literal)) ;) (expression_statement "local_17c = (byte)iVar14;" (assignment_expression "local_17c = (byte)iVar14" identifier = (cast_expression "(byte)iVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)((uint)iVar14 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar14 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar14 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar14 >> 8)" ( (binary_expression "(uint)iVar14 >> 8" (cast_expression "(uint)iVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)((uint)iVar14 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar14 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar14 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar14 >> 0x10)" ( (binary_expression "(uint)iVar14 >> 0x10" (cast_expression "(uint)iVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);" (assignment_expression "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16)" identifier = (binary_expression "iStack_178 + (uint)(0xfffffffe < uVar16)" identifier + (call_expression "(uint)(0xfffffffe < uVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar16)" ( (binary_expression "0xfffffffe < uVar16" number_literal < identifier) ))))) ;) }) while (parenthesized_expression "((int)(uint)local_184 < iVar19)" ( (binary_expression "(int)(uint)local_184 < iVar19" (cast_expression "(int)(uint)local_184" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_184" ( (type_descriptor "uint" type_identifier) ) identifier)) < identifier) )) ;) }))) })) (labeled_statement "LAB_001d1490:\n      bVar42 = bVar11 != 2;" statement_identifier : (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" identifier = (binary_expression "bVar11 != 2" identifier != number_literal)) ;)) (labeled_statement "LAB_001d149a:\n      bVar29 = bVar42;" statement_identifier : (expression_statement "bVar29 = bVar42;" (assignment_expression "bVar29 = bVar42" identifier = identifier) ;)) (if_statement "if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" if (parenthesized_expression "(param_2[0xcca] == 0)" ( (binary_expression "param_2[0xcca] == 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }" { (labeled_statement "LAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;" statement_identifier : (if_statement "if (iVar13 == 0) goto LAB_001d279e;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d279e;" goto statement_identifier ;))) (labeled_statement "LAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);" statement_identifier : (expression_statement "local_164 = (char *)(local_128 + -0xe);" (assignment_expression "local_164 = (char *)(local_128 + -0xe)" identifier = (cast_expression "(char *)(local_128 + -0xe)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_128 + -0xe)" ( (binary_expression "local_128 + -0xe" identifier + number_literal) )))) ;)) (expression_statement "uVar16 = GetStringInfoLength(iVar13);" (assignment_expression "uVar16 = GetStringInfoLength(iVar13)" identifier = (call_expression "GetStringInfoLength(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "local_17c = (byte)uVar16;" (assignment_expression "local_17c = (byte)uVar16" identifier = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uStack_17b = (undefined1)(uVar16 >> 8);" (assignment_expression "uStack_17b = (undefined1)(uVar16 >> 8)" identifier = (call_expression "(undefined1)(uVar16 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uStack_17a = (undefined2)(uVar16 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(uVar16 >> 0x10)" identifier = (call_expression "(undefined2)(uVar16 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar16 >> 0x10)" ( (binary_expression "uVar16 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar17 = uVar16 & 3;" (assignment_expression "uVar17 = uVar16 & 3" identifier = (binary_expression "uVar16 & 3" identifier & number_literal)) ;) (if_statement "if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          local_174 = 0;\n          local_170 = 0;\n        }" { (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" identifier = number_literal) ;) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" else (compound_statement "{\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" { (expression_statement "local_174 = 4 - uVar17;" (assignment_expression "local_174 = 4 - uVar17" identifier = (binary_expression "4 - uVar17" number_literal - identifier)) ;) (expression_statement "local_170 = -(uint)(4 < uVar17);" (assignment_expression "local_170 = -(uint)(4 < uVar17)" identifier = (unary_expression "-(uint)(4 < uVar17)" - (call_expression "(uint)(4 < uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(4 < uVar17)" ( (binary_expression "4 < uVar17" number_literal < identifier) ))))) ;) }))) (expression_statement "local_128 = uVar16 + local_128 + local_174;" (assignment_expression "local_128 = uVar16 + local_128 + local_174" identifier = (binary_expression "uVar16 + local_128 + local_174" (binary_expression "uVar16 + local_128" identifier + identifier) + identifier)) ;) }) (else_clause "else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" else (compound_statement "{\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" { (labeled_statement "LAB_001d2640:\n        dVar47 = (double)bVar11;" statement_identifier : (expression_statement "dVar47 = (double)bVar11;" (assignment_expression "dVar47 = (double)bVar11" identifier = (cast_expression "(double)bVar11" ( (type_descriptor "double" primitive_type) ) identifier)) ;)) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Writing BMP version %.20g datastream"" " string_content ") , identifier ))) ;) (if_statement "if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" if (parenthesized_expression "(*param_2 == 1)" ( (binary_expression "*param_2 == 1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Storage class=DirectClass"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" else (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Storage class=PseudoClass"" " string_content ") , identifier ))) ;) }))) (expression_statement "dVar47 = (double)(uint)param_2[8];" (assignment_expression "dVar47 = (double)(uint)param_2[8]" identifier = (cast_expression "(double)(uint)param_2[8]" ( (type_descriptor "double" primitive_type) ) (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])))) ;) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Image depth=%.20g"" " string_content ") , identifier ))) ;) (if_statement "if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" if (parenthesized_expression "(param_2[0xa5] == 0)" ( (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Matte=MagickFalse"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" else (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   Matte=True"" " string_content ") , identifier ))) ;) }))) (expression_statement "dVar47 = (double)uVar7;" (assignment_expression "dVar47 = (double)uVar7" identifier = (cast_expression "(double)uVar7" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""   BMP bits_per_pixel=%.20g"" " string_content ") , identifier ))) ;) (if_statement "if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" if (parenthesized_expression "(local_ac == 1)" ( (binary_expression "local_ac == 1" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }" { (expression_statement "pcVar46 = "   Compression=BI_RLE8";" (assignment_expression "pcVar46 = "   Compression=BI_RLE8"" identifier = (string_literal ""   Compression=BI_RLE8"" " string_content ")) ;) (expression_statement "uVar45 = 0x8ba;" (assignment_expression "uVar45 = 0x8ba" identifier = number_literal) ;) }) (else_clause "else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" else (if_statement "if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" if (parenthesized_expression "(local_ac == 0)" ( (binary_expression "local_ac == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }" { (expression_statement "pcVar46 = "   Compression=BI_RGB";" (assignment_expression "pcVar46 = "   Compression=BI_RGB"" identifier = (string_literal ""   Compression=BI_RGB"" " string_content ")) ;) (expression_statement "uVar45 = 0x8b4;" (assignment_expression "uVar45 = 0x8b4" identifier = number_literal) ;) }) (else_clause "else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" else (if_statement "if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" if (parenthesized_expression "(local_ac == 3)" ( (binary_expression "local_ac == 3" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }" { (expression_statement "pcVar46 = "   Compression=BI_BITFIELDS";" (assignment_expression "pcVar46 = "   Compression=BI_BITFIELDS"" identifier = (string_literal ""   Compression=BI_BITFIELDS"" " string_content ")) ;) (expression_statement "uVar45 = 0x8c0;" (assignment_expression "uVar45 = 0x8c0" identifier = number_literal) ;) }) (else_clause "else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" else (compound_statement "{\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" { (expression_statement "dVar47 = (double)(ulonglong)local_ac;" (assignment_expression "dVar47 = (double)(ulonglong)local_ac" identifier = (cast_expression "(double)(ulonglong)local_ac" ( (type_descriptor "double" primitive_type) ) (cast_expression "(ulonglong)local_ac" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "pcVar46 = "   Compression=UNKNOWN (%u)";" (assignment_expression "pcVar46 = "   Compression=UNKNOWN (%u)"" identifier = (string_literal ""   Compression=UNKNOWN (%u)"" " string_content ")) ;) (expression_statement "uVar45 = 0x8c6;" (assignment_expression "uVar45 = 0x8c6" identifier = number_literal) ;) }))))))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , identifier , identifier , identifier ))) ;) (if_statement "if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" if (parenthesized_expression "(local_144 == 0)" ( (binary_expression "local_144 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }" { (expression_statement "pcVar46 = "   Number_colors=unspecified";" (assignment_expression "pcVar46 = "   Number_colors=unspecified"" identifier = (string_literal ""   Number_colors=unspecified"" " string_content ")) ;) (expression_statement "uVar45 = 0x8cc;" (assignment_expression "uVar45 = 0x8cc" identifier = number_literal) ;) }) (else_clause "else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" else (compound_statement "{\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" { (expression_statement "pcVar46 = "   Number_colors=%u";" (assignment_expression "pcVar46 = "   Number_colors=%u"" identifier = (string_literal ""   Number_colors=%u"" " string_content ")) ;) (expression_statement "dVar47 = (double)(ulonglong)local_144;" (assignment_expression "dVar47 = (double)(ulonglong)local_144" identifier = (cast_expression "(double)(ulonglong)local_144" ( (type_descriptor "double" primitive_type) ) (cast_expression "(ulonglong)local_144" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar45 = 0x8cf;" (assignment_expression "uVar45 = 0x8cf" identifier = number_literal) ;) }))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , identifier , identifier , identifier ))) ;) (if_statement "if (iVar13 != 0) goto LAB_001d14b4;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001d14b4;" goto statement_identifier ;)) (labeled_statement "LAB_001d279e:\n        local_174 = 0;" statement_identifier : (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" identifier = number_literal) ;)) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" identifier = number_literal) ;) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" identifier = number_literal) ;) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" identifier = number_literal) ;) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" identifier = number_literal) ;) (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "WriteBlob(param_2,2);" (call_expression "WriteBlob(param_2,2)" identifier (argument_list "(param_2,2)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_128);" (call_expression "WriteBlobLSBLong(param_2,local_128)" identifier (argument_list "(param_2,local_128)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,0);" (call_expression "WriteBlobLSBLong(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_c0);" (call_expression "WriteBlobLSBLong(param_2,local_c0)" identifier (argument_list "(param_2,local_c0)" ( identifier , identifier ))) ;) (if_statement "if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" { (expression_statement "WriteBlobLSBLong(param_2,local_bc);" (call_expression "WriteBlobLSBLong(param_2,local_bc)" identifier (argument_list "(param_2,local_bc)" ( identifier , identifier ))) ;) (expression_statement "local_120 = (short)iVar18;" (assignment_expression "local_120 = (short)iVar18" identifier = (cast_expression "(short)iVar18" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "WriteBlobLSBSignedShort(param_2,(int)local_120);" (call_expression "WriteBlobLSBSignedShort(param_2,(int)local_120)" identifier (argument_list "(param_2,(int)local_120)" ( identifier , (cast_expression "(int)local_120" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_11c = (short)iVar28;" (assignment_expression "local_11c = (short)iVar28" identifier = (cast_expression "(short)iVar28" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "WriteBlobLSBSignedShort(param_2,(int)local_11c);" (call_expression "WriteBlobLSBSignedShort(param_2,(int)local_11c)" identifier (argument_list "(param_2,(int)local_11c)" ( identifier , (cast_expression "(int)local_11c" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "WriteBlobLSBShort(param_2,1);" (call_expression "WriteBlobLSBShort(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBShort(param_2,uVar7);" (call_expression "WriteBlobLSBShort(param_2,uVar7)" identifier (argument_list "(param_2,uVar7)" ( identifier , identifier ))) ;) (expression_statement "iVar18 = *param_2;" (assignment_expression "iVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" identifier = (subscript_expression "param_2[0xcca]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" else (compound_statement "{\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" { (expression_statement "WriteBlobLSBLong(param_2,local_bc);" (call_expression "WriteBlobLSBLong(param_2,local_bc)" identifier (argument_list "(param_2,local_bc)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBSignedLong(param_2,iVar18);" (call_expression "WriteBlobLSBSignedLong(param_2,iVar18)" identifier (argument_list "(param_2,iVar18)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBSignedLong(param_2,iVar28);" (call_expression "WriteBlobLSBSignedLong(param_2,iVar28)" identifier (argument_list "(param_2,iVar28)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBShort(param_2,1);" (call_expression "WriteBlobLSBShort(param_2,1)" identifier (argument_list "(param_2,1)" ( identifier , number_literal ))) ;) (expression_statement "WriteBlobLSBShort(param_2,uVar7);" (call_expression "WriteBlobLSBShort(param_2,uVar7)" identifier (argument_list "(param_2,uVar7)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_ac);" (call_expression "WriteBlobLSBLong(param_2,local_ac)" identifier (argument_list "(param_2,local_ac)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_a8);" (call_expression "WriteBlobLSBLong(param_2,local_a8)" identifier (argument_list "(param_2,local_a8)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_a4);" (call_expression "WriteBlobLSBLong(param_2,local_a4)" identifier (argument_list "(param_2,local_a4)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_a0);" (call_expression "WriteBlobLSBLong(param_2,local_a0)" identifier (argument_list "(param_2,local_a0)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_144);" (call_expression "WriteBlobLSBLong(param_2,local_144)" identifier (argument_list "(param_2,local_144)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_144);" (call_expression "WriteBlobLSBLong(param_2,local_144)" identifier (argument_list "(param_2,local_144)" ( identifier , identifier ))) ;) (if_statement "if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }" if (parenthesized_expression "((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0))" ( (binary_expression "(bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)" (parenthesized_expression "(bVar11 == 4)" ( (binary_expression "bVar11 == 4" identifier == number_literal) )) && (parenthesized_expression "(bVar6 || param_2[0xa5] != 0)" ( (binary_expression "bVar6 || param_2[0xa5] != 0" identifier || (binary_expression "param_2[0xa5] != 0" (subscript_expression "param_2[0xa5]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }" { (expression_statement "WriteBlobLSBLong(param_2,local_98);" (call_expression "WriteBlobLSBLong(param_2,local_98)" identifier (argument_list "(param_2,local_98)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_94);" (call_expression "WriteBlobLSBLong(param_2,local_94)" identifier (argument_list "(param_2,local_94)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_90);" (call_expression "WriteBlobLSBLong(param_2,local_90)" identifier (argument_list "(param_2,local_90)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_8c);" (call_expression "WriteBlobLSBLong(param_2,local_8c)" identifier (argument_list "(param_2,local_8c)" ( identifier , identifier ))) ;) (if_statement "if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n            WriteBlobLSBLong(param_2,0x73524742);\n          }" { (expression_statement "WriteBlobLSBLong(param_2,0x73524742);" (call_expression "WriteBlobLSBLong(param_2,0x73524742)" identifier (argument_list "(param_2,0x73524742)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" else (compound_statement "{\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" { (expression_statement "WriteBlobLSBLong(param_2,0x4d424544);" (call_expression "WriteBlobLSBLong(param_2,0x4d424544)" identifier (argument_list "(param_2,0x4d424544)" ( identifier , number_literal ))) ;) }))) (expression_statement "dVar47 = *(double *)(param_2 + 0x5d);" (assignment_expression "dVar47 = *(double *)(param_2 + 0x5d)" identifier = (pointer_expression "*(double *)(param_2 + 0x5d)" * (cast_expression "(double *)(param_2 + 0x5d)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5d)" ( (binary_expression "param_2 + 0x5d" identifier + number_literal) ))))) ;) (if_statement "if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" if (parenthesized_expression "((1.0 < dVar47) || (dVar47 <= 0.0))" ( (binary_expression "(1.0 < dVar47) || (dVar47 <= 0.0)" (parenthesized_expression "(1.0 < dVar47)" ( (binary_expression "1.0 < dVar47" number_literal < identifier) )) || (parenthesized_expression "(dVar47 <= 0.0)" ( (binary_expression "dVar47 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }" { (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" identifier = number_literal) ;) (expression_statement "param_2[0x5d] = 0;" (assignment_expression "param_2[0x5d] = 0" (subscript_expression "param_2[0x5d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x5e] = 0;" (assignment_expression "param_2[0x5e] = 0" (subscript_expression "param_2[0x5e]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" else (compound_statement "{\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" { (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar47 * (double)DAT_002cc820)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar47 * (double)DAT_002cc820)" identifier (argument_list "(dVar47 * (double)DAT_002cc820)" ( (binary_expression "dVar47 * (double)DAT_002cc820" identifier * (cast_expression "(double)DAT_002cc820" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }))) (if_statement "if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x5f))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x5f)" number_literal < (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x5f) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x5f) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }" { (expression_statement "param_2[0x5f] = 0;" (assignment_expression "param_2[0x5f] = 0" (subscript_expression "param_2[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x60] = 0;" (assignment_expression "param_2[0x60] = 0" (subscript_expression "param_2[0x60]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 99))" ( (binary_expression "1.0 < *(double *)(param_2 + 99)" number_literal < (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 99) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 99) <= 0.0" (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }" { (expression_statement "param_2[99] = 0;" (assignment_expression "param_2[99] = 0" (subscript_expression "param_2[99]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[100] = 0;" (assignment_expression "param_2[100] = 0" (subscript_expression "param_2[100]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x65))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x65)" number_literal < (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x65) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x65) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }" { (expression_statement "param_2[0x65] = 0;" (assignment_expression "param_2[0x65] = 0" (subscript_expression "param_2[0x65]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x66] = 0;" (assignment_expression "param_2[0x66] = 0" (subscript_expression "param_2[0x66]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x69))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x69)" number_literal < (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x69) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x69) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }" { (expression_statement "param_2[0x69] = 0;" (assignment_expression "param_2[0x69] = 0" (subscript_expression "param_2[0x69]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x6a] = 0;" (assignment_expression "param_2[0x6a] = 0" (subscript_expression "param_2[0x6a]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }" if (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0))" ( (binary_expression "(1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x6b))" ( (binary_expression "1.0 < *(double *)(param_2 + 0x6b)" number_literal < (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) ))))) )) || (parenthesized_expression "(*(double *)(param_2 + 0x6b) <= 0.0)" ( (binary_expression "*(double *)(param_2 + 0x6b) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) )))) <= number_literal) ))) )) (compound_statement "{\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }" { (expression_statement "param_2[0x6b] = 0;" (assignment_expression "param_2[0x6b] = 0" (subscript_expression "param_2[0x6b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x6c] = 0;" (assignment_expression "param_2[0x6c] = 0" (subscript_expression "param_2[0x6c]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }" if (parenthesized_expression "((1.0 < local_38) || (local_38 <= 0.0))" ( (binary_expression "(1.0 < local_38) || (local_38 <= 0.0)" (parenthesized_expression "(1.0 < local_38)" ( (binary_expression "1.0 < local_38" number_literal < identifier) )) || (parenthesized_expression "(local_38 <= 0.0)" ( (binary_expression "local_38 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_38 = 0.0;\n          }" { (expression_statement "local_38 = 0.0;" (assignment_expression "local_38 = 0.0" identifier = number_literal) ;) })) (expression_statement "dVar47 = local_38;" (assignment_expression "dVar47 = local_38" identifier = identifier) ;) (if_statement "if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }" if (parenthesized_expression "((1.0 < local_30) || (local_30 <= 0.0))" ( (binary_expression "(1.0 < local_30) || (local_30 <= 0.0)" (parenthesized_expression "(1.0 < local_30)" ( (binary_expression "1.0 < local_30" number_literal < identifier) )) || (parenthesized_expression "(local_30 <= 0.0)" ( (binary_expression "local_30 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_30 = 0.0;\n          }" { (expression_statement "local_30 = 0.0;" (assignment_expression "local_30 = 0.0" identifier = number_literal) ;) })) (expression_statement "dVar2 = local_30;" (assignment_expression "dVar2 = local_30" identifier = identifier) ;) (if_statement "if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }" if (parenthesized_expression "((1.0 < local_28) || (local_28 <= 0.0))" ( (binary_expression "(1.0 < local_28) || (local_28 <= 0.0)" (parenthesized_expression "(1.0 < local_28)" ( (binary_expression "1.0 < local_28" number_literal < identifier) )) || (parenthesized_expression "(local_28 <= 0.0)" ( (binary_expression "local_28 <= 0.0" identifier <= number_literal) ))) )) (compound_statement "{\n            local_28 = 0.0;\n          }" { (expression_statement "local_28 = 0.0;" (assignment_expression "local_28 = 0.0" identifier = number_literal) ;) })) (expression_statement "dVar9 = local_28;" (assignment_expression "dVar9 = local_28" identifier = identifier) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "dVar1 = (double)DAT_002cc820;" (assignment_expression "dVar1 = (double)DAT_002cc820" identifier = (cast_expression "(double)DAT_002cc820" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" identifier = (cast_expression "(uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" identifier (argument_list "((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" ( (binary_expression "(float)*(double *)(param_2 + 0x5f) * DAT_002cc820" (cast_expression "(float)*(double *)(param_2 + 0x5f)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) ))))) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" identifier (argument_list "((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" ( (binary_expression "(1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))" ( (binary_expression "1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f))" number_literal - (parenthesized_expression "(*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f))" ( (binary_expression "*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)" (pointer_expression "*(double *)(param_2 + 0x5d)" * (cast_expression "(double *)(param_2 + 0x5d)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5d)" ( (binary_expression "param_2 + 0x5d" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 0x5f)" * (cast_expression "(double *)(param_2 + 0x5f)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5f)" ( (binary_expression "param_2 + 0x5f" identifier + number_literal) ))))) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 99))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 99))" ( (binary_expression "dVar1 * *(double *)(param_2 + 99)" identifier * (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x65))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 0x65))" ( (binary_expression "dVar1 * *(double *)(param_2 + 0x65)" identifier * (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" identifier (argument_list "((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" ( (binary_expression "(1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65)))" ( (binary_expression "1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))" number_literal - (parenthesized_expression "(*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))" ( (binary_expression "*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65)" (pointer_expression "*(double *)(param_2 + 99)" * (cast_expression "(double *)(param_2 + 99)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 99)" ( (binary_expression "param_2 + 99" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 0x65)" * (cast_expression "(double *)(param_2 + 0x65)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x65)" ( (binary_expression "param_2 + 0x65" identifier + number_literal) ))))) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x69))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 0x69))" ( (binary_expression "dVar1 * *(double *)(param_2 + 0x69)" identifier * (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" identifier = (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x6b))" identifier (argument_list "(dVar1 * *(double *)(param_2 + 0x6b))" ( (binary_expression "dVar1 * *(double *)(param_2 + 0x6b)" identifier * (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) ))))) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" identifier = (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" identifier (argument_list "((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" ( (binary_expression "(1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))" ( (binary_expression "1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b))" number_literal - (parenthesized_expression "(*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b))" ( (binary_expression "*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)" (pointer_expression "*(double *)(param_2 + 0x69)" * (cast_expression "(double *)(param_2 + 0x69)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x69)" ( (binary_expression "param_2 + 0x69" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 0x6b)" * (cast_expression "(double *)(param_2 + 0x6b)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6b)" ( (binary_expression "param_2 + 0x6b" identifier + number_literal) ))))) ))) )) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "dVar1 = (double)DAT_002b2420;" (assignment_expression "dVar1 = (double)DAT_002b2420" identifier = (cast_expression "(double)DAT_002b2420" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420)" identifier = (cast_expression "(uint)(longlong)ROUND((float)dVar47 * DAT_002b2420)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND((float)dVar47 * DAT_002b2420)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND((float)dVar47 * DAT_002b2420)" identifier (argument_list "((float)dVar47 * DAT_002b2420)" ( (binary_expression "(float)dVar47 * DAT_002b2420" (cast_expression "(float)dVar47" ( (type_descriptor "float" primitive_type) ) identifier) * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar2 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar2 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 * dVar1)" identifier (argument_list "(dVar2 * dVar1)" ( (binary_expression "dVar2 * dVar1" identifier * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1)" identifier = (cast_expression "(uint)(longlong)ROUND(dVar9 * dVar1)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(dVar9 * dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar9 * dVar1)" identifier (argument_list "(dVar9 * dVar1)" ( (binary_expression "dVar9 * dVar1" identifier * identifier) )))))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" identifier (argument_list "(param_2,local_e4)" ( identifier , identifier ))) ;) (if_statement "if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }" if (parenthesized_expression "((param_2[0x75] != 0) || (bVar41))" ( (binary_expression "(param_2[0x75] != 0) || (bVar41)" (parenthesized_expression "(param_2[0x75] != 0)" ( (binary_expression "param_2[0x75] != 0" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(bVar41)" ( identifier ))) )) (compound_statement "{\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }" { (expression_statement "uVar16 = param_2[0x75] - 1;" (assignment_expression "uVar16 = param_2[0x75] - 1" identifier = (binary_expression "param_2[0x75] - 1" (subscript_expression "param_2[0x75]" identifier [ number_literal ]) - number_literal)) ;) (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" identifier = number_literal) ;) (if_statement "if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }" if (parenthesized_expression "(uVar16 < 4)" ( (binary_expression "uVar16 < 4" identifier < number_literal) )) (compound_statement "{\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }" { (expression_statement "uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);" (assignment_expression "uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" identifier = (pointer_expression "*(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" * (cast_expression "(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002cc784 + uVar16 * 4)" ( (binary_expression "&DAT_002cc784 + uVar16 * 4" (pointer_expression "&DAT_002cc784" & identifier) + (binary_expression "uVar16 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "WriteBlobLSBLong(param_2,uVar45);" (call_expression "WriteBlobLSBLong(param_2,uVar45)" identifier (argument_list "(param_2,uVar45)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,local_164);" (call_expression "WriteBlobLSBLong(param_2,local_164)" identifier (argument_list "(param_2,local_164)" ( identifier , identifier ))) ;) (expression_statement "WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );" (call_expression "WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            )" identifier (argument_list "(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            )" ( identifier , (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) + identifier) ))) ;) (expression_statement "WriteBlobLSBLong(param_2,0);" (call_expression "WriteBlobLSBLong(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal ))) ;) })) })) (expression_statement "iVar18 = *param_2;" (assignment_expression "iVar18 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" identifier = (subscript_expression "param_2[0xcca]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }" if (parenthesized_expression "(iVar18 == 2)" ( (binary_expression "iVar18 == 2" identifier == number_literal) )) (compound_statement "{\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }" { (if_statement "if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }" { (expression_statement "local_184 = (ulonglong)(uint)param_2[9];" (assignment_expression "local_184 = (ulonglong)(uint)param_2[9]" identifier = (cast_expression "(ulonglong)(uint)param_2[9]" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(uint)param_2[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[9]" identifier [ number_literal ])))) ;) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Colormap: %.20g entries"" " string_content ") , (cast_expression "(double)local_184" ( (type_descriptor "double" primitive_type) ) identifier) ))) ;) })) (expression_statement "bVar25 = (byte)local_ae;" (assignment_expression "bVar25 = (byte)local_ae" identifier = (cast_expression "(byte)local_ae" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "iVar14 = 1 << (bVar25 & 0x1f);" (assignment_expression "iVar14 = 1 << (bVar25 & 0x1f)" identifier = (binary_expression "1 << (bVar25 & 0x1f)" number_literal << (parenthesized_expression "(bVar25 & 0x1f)" ( (binary_expression "bVar25 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);" (assignment_expression "puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4)" identifier = (cast_expression "(undefined2 *)AcquireQuantumMemory(iVar14,4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(iVar14,4)" identifier (argument_list "(iVar14,4)" ( identifier , number_literal ))))) ;) (if_statement "if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }" if (parenthesized_expression "(puVar21 == (undefined2 *)0x0)" ( (binary_expression "puVar21 == (undefined2 *)0x0" identifier == (cast_expression "(undefined2 *)0x0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }" { (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);" (call_expression "ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6)" identifier (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6)" ( identifier , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , number_literal , (string_literal ""MemoryAllocationFailed"" " string_content ") , (string_literal ""`%s\'"" " string_content escape_sequence ") , (binary_expression "param_2 + 0xc6" identifier + number_literal) ))) ;) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }" while (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" ( (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" identifier = identifier) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }" { (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" identifier = (cast_expression "(int *)piVar8[0xccf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[0xccf]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" identifier = identifier) ;) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" identifier = identifier) ;) })) (labeled_statement "LAB_001d3a2a:\n          CloseBlob(piVar35);" statement_identifier : (expression_statement "CloseBlob(piVar35);" (call_expression "CloseBlob(piVar35)" identifier (argument_list "(piVar35)" ( identifier ))) ;)) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_001d3a3a;" goto statement_identifier ;) })) (expression_statement "uVar16 = local_9c;" (assignment_expression "uVar16 = local_9c" identifier = identifier) ;) (if_statement "if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }" if (parenthesized_expression "(param_2[9] <= (int)local_9c)" ( (binary_expression "param_2[9] <= (int)local_9c" (subscript_expression "param_2[9]" identifier [ number_literal ]) <= (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar16 = param_2[9];\n        }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) })) (expression_statement "puVar23 = puVar21;" (assignment_expression "puVar23 = puVar21" identifier = identifier) ;) (if_statement "if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" if (parenthesized_expression "((int)uVar16 < 1)" ( (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          iVar18 = 0;\n        }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" else (compound_statement "{\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);" do (compound_statement "{\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          }" { (expression_statement "dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x30 + iVar28)" identifier = (pointer_expression "*(double *)(param_2[10] + 0x30 + iVar28)" * (cast_expression "(double *)(param_2[10] + 0x30 + iVar28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + 0x30 + iVar28)" ( (binary_expression "param_2[10] + 0x30 + iVar28" (binary_expression "param_2[10] + 0x30" (subscript_expression "param_2[10]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*(undefined1 *)puVar23 = uVar31;" (assignment_expression "*(undefined1 *)puVar23 = uVar31" (pointer_expression "*(undefined1 *)puVar23" * (cast_expression "(undefined1 *)puVar23" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x28 + iVar28)" identifier = (pointer_expression "*(double *)(param_2[10] + 0x28 + iVar28)" * (cast_expression "(double *)(param_2[10] + 0x28 + iVar28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + 0x28 + iVar28)" ( (binary_expression "param_2[10] + 0x28 + iVar28" (binary_expression "param_2[10] + 0x28" (subscript_expression "param_2[10]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*(undefined1 *)((int)puVar23 + 1) = uVar31;" (assignment_expression "*(undefined1 *)((int)puVar23 + 1) = uVar31" (pointer_expression "*(undefined1 *)((int)puVar23 + 1)" * (cast_expression "(undefined1 *)((int)puVar23 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 1)" ( (binary_expression "(int)puVar23 + 1" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x20 + iVar28)" identifier = (pointer_expression "*(double *)(param_2[10] + 0x20 + iVar28)" * (cast_expression "(double *)(param_2[10] + 0x20 + iVar28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + 0x20 + iVar28)" ( (binary_expression "param_2[10] + 0x20 + iVar28" (binary_expression "param_2[10] + 0x20" (subscript_expression "param_2[10]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" if (parenthesized_expression "(0.0 < dVar47)" ( (binary_expression "0.0 < dVar47" number_literal < identifier) )) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" { (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" identifier = (binary_expression "dVar47 / (double)DAT_002a7ff0" identifier / (cast_expression "(double)DAT_002a7ff0" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" identifier = number_literal) ;) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" if (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" ( (binary_expression "dVar47 < (double)DAT_002a7ff4" identifier < (cast_expression "(double)DAT_002a7ff4" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" { (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" identifier = (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "undefined1" type_identifier) ) (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" identifier (argument_list "(dVar47 + (double)DAT_0029f124)" ( (binary_expression "dVar47 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) })) })) (expression_statement "*(undefined1 *)(puVar23 + 1) = uVar31;" (assignment_expression "*(undefined1 *)(puVar23 + 1) = uVar31" (pointer_expression "*(undefined1 *)(puVar23 + 1)" * (cast_expression "(undefined1 *)(puVar23 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 1)" ( (binary_expression "puVar23 + 1" identifier + number_literal) )))) = identifier) ;) (if_statement "if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" if (parenthesized_expression "(bVar29)" ( identifier )) (compound_statement "{\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }" { (expression_statement "*(undefined1 *)((int)puVar23 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar23 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar23 + 3)" * (cast_expression "(undefined1 *)((int)puVar23 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) }) (else_clause "else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" else (compound_statement "{\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" { (expression_statement "puVar23 = (undefined2 *)((int)puVar23 + 3);" (assignment_expression "puVar23 = (undefined2 *)((int)puVar23 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar23 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar28 = iVar28 + 0x50;" (assignment_expression "iVar28 = iVar28 + 0x50" identifier = (binary_expression "iVar28 + 0x50" identifier + number_literal)) ;) (expression_statement "uVar16 = local_9c;" (assignment_expression "uVar16 = local_9c" identifier = identifier) ;) (if_statement "if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }" if (parenthesized_expression "(param_2[9] <= (int)local_9c)" ( (binary_expression "param_2[9] <= (int)local_9c" (subscript_expression "param_2[9]" identifier [ number_literal ]) <= (cast_expression "(int)local_9c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              uVar16 = param_2[9];\n            }" { (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" identifier = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) })) }) while (parenthesized_expression "(iVar18 < (int)uVar16)" ( (binary_expression "iVar18 < (int)uVar16" identifier < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) }))) (if_statement "if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }" if (parenthesized_expression "(iVar18 < iVar14)" ( (binary_expression "iVar18 < iVar14" identifier < identifier) )) (compound_statement "{\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }" { (do_statement "do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);" do (compound_statement "{\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          }" { (while_statement "while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }" { (expression_statement "*(undefined1 *)(puVar23 + 1) = 0;" (assignment_expression "*(undefined1 *)(puVar23 + 1) = 0" (pointer_expression "*(undefined1 *)(puVar23 + 1)" * (cast_expression "(undefined1 *)(puVar23 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar23 + 1)" ( (binary_expression "puVar23 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (if_statement "if (!bVar29) break;" if (parenthesized_expression "(!bVar29)" ( (unary_expression "!bVar29" ! identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)((int)puVar23 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar23 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar23 + 3)" * (cast_expression "(undefined1 *)((int)puVar23 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) (if_statement "if (iVar18 == iVar14) goto LAB_001d3985;" if (parenthesized_expression "(iVar18 == iVar14)" ( (binary_expression "iVar18 == iVar14" identifier == identifier) )) (goto_statement "goto LAB_001d3985;" goto statement_identifier ;)) })) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar23 = (undefined2 *)((int)puVar23 + 3);" (assignment_expression "puVar23 = (undefined2 *)((int)puVar23 + 3)" identifier = (cast_expression "(undefined2 *)((int)puVar23 + 3)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + 3)" ( (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar18 != iVar14)" ( (binary_expression "iVar18 != iVar14" identifier != identifier) )) ;) })) (labeled_statement "LAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }" statement_identifier : (if_statement "if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }" if (parenthesized_expression "(bVar11 == 2)" ( (binary_expression "bVar11 == 2" identifier == number_literal) )) (compound_statement "{\n          iVar14 = 3;\n        }" { (expression_statement "iVar14 = 3;" (assignment_expression "iVar14 = 3" identifier = number_literal) ;) }) (else_clause "else {\n          iVar14 = 4;\n        }" else (compound_statement "{\n          iVar14 = 4;\n        }" { (expression_statement "iVar14 = 4;" (assignment_expression "iVar14 = 4" identifier = number_literal) ;) })))) (expression_statement "WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));" (call_expression "WriteBlob(param_2,iVar14 << (bVar25 & 0x1f))" identifier (argument_list "(param_2,iVar14 << (bVar25 & 0x1f))" ( identifier , (binary_expression "iVar14 << (bVar25 & 0x1f)" identifier << (parenthesized_expression "(bVar25 & 0x1f)" ( (binary_expression "bVar25 & 0x1f" identifier & number_literal) ))) ))) ;) (expression_statement "RelinquishMagickMemory(puVar21);" (call_expression "RelinquishMagickMemory(puVar21)" identifier (argument_list "(puVar21)" ( identifier ))) ;) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" identifier = (subscript_expression "param_2[0xcca]" identifier [ number_literal ])) ;) })) (expression_statement "sVar37 = local_a8;" (assignment_expression "sVar37 = local_a8" identifier = identifier) ;) (if_statement "if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Pixels:  %u bytes"" " string_content ") , identifier ))) ;) })) (expression_statement "WriteBlob(param_2,sVar37);" (call_expression "WriteBlob(param_2,sVar37)" identifier (argument_list "(param_2,sVar37)" ( identifier , identifier ))) ;) (if_statement "if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }" { (if_statement "if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }" if (parenthesized_expression "(param_2[0xcca] != 0)" ( (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }" { (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174)" identifier (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174)" ( number_literal , (string_literal ""coders/bmp.c"" " string_content ") , (string_literal ""WriteBMPImage"" " string_content ") , number_literal , (string_literal ""  Profile:  %g bytes"" " string_content ") , (binary_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174" (cast_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) )))) + (cast_expression "(double)(short)local_174" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)local_174" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ))) ;) })) (expression_statement "GetStringInfoDatum(iVar13);" (call_expression "GetStringInfoDatum(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));" (call_expression "WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)))" identifier (argument_list "(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)))" ( identifier , (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" identifier (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" ( identifier , (call_expression "CONCAT11(uStack_17b,local_17c)" identifier (argument_list "(uStack_17b,local_17c)" ( identifier , identifier ))) ))) ))) ;) (if_statement "if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }" if (parenthesized_expression "(local_170 != 0 || local_174 != 0)" ( (binary_expression "local_170 != 0 || local_174 != 0" (binary_expression "local_170 != 0" identifier != number_literal) || (binary_expression "local_174 != 0" identifier != number_literal)) )) (compound_statement "{\n          WriteBlob(param_2,local_174);\n        }" { (expression_statement "WriteBlob(param_2,local_174);" (call_expression "WriteBlob(param_2,local_174)" identifier (argument_list "(param_2,local_174)" ( identifier , identifier ))) ;) })) })) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" identifier (argument_list "(local_124)" ( identifier ))) ;) (expression_statement "iVar13 = GetNextImageInList(param_2);" (assignment_expression "iVar13 = GetNextImageInList(param_2)" identifier = (call_expression "GetNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }" { (labeled_statement "LAB_001d3caf:\n        CloseBlob(param_2);" statement_identifier : (expression_statement "CloseBlob(param_2);" (call_expression "CloseBlob(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001d3a3a;" goto statement_identifier ;) })) (expression_statement "param_2 = (int *)SyncNextImageInList(param_2);" (assignment_expression "param_2 = (int *)SyncNextImageInList(param_2)" identifier = (cast_expression "(int *)SyncNextImageInList(param_2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "SyncNextImageInList(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "uVar17 = local_10c + 1;" (assignment_expression "uVar17 = local_10c + 1" identifier = (binary_expression "local_10c + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = local_108 + (uint)(0xfffffffe < local_10c);" (assignment_expression "iVar14 = local_108 + (uint)(0xfffffffe < local_10c)" identifier = (binary_expression "local_108 + (uint)(0xfffffffe < local_10c)" identifier + (call_expression "(uint)(0xfffffffe < local_10c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < local_10c)" ( (binary_expression "0xfffffffe < local_10c" number_literal < identifier) ))))) ;) (expression_statement "iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);" (assignment_expression "iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0)" identifier = (call_expression "SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0)" identifier (argument_list "(param_2,"Save/Images",local_10c,local_108,uVar15,0)" ( identifier , (string_literal ""Save/Images"" " string_content ") , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;" if (parenthesized_expression "((iVar13 == 0) || (param_1[3] == 0))" ( (binary_expression "(iVar13 == 0) || (param_1[3] == 0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_001d3caf;" goto statement_identifier ;)) (expression_statement "uVar16 = param_2[1] - 3;" (assignment_expression "uVar16 = param_2[1] - 3" identifier = (binary_expression "param_2[1] - 3" (subscript_expression "param_2[1]" identifier [ number_literal ]) - number_literal)) ;) (expression_statement "local_10c = uVar17;" (assignment_expression "local_10c = uVar17" identifier = identifier) ;) (expression_statement "local_108 = iVar14;" (assignment_expression "local_108 = iVar14" identifier = identifier) ;) (if_statement "if (0x1e < uVar16) break;" if (parenthesized_expression "(0x1e < uVar16)" ( (binary_expression "0x1e < uVar16" number_literal < identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_001d1cae:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0)" ( (binary_expression "(0x403c0001U >> (uVar16 & 0x1f) & 1) != 0" (parenthesized_expression "(0x403c0001U >> (uVar16 & 0x1f) & 1)" ( (binary_expression "0x403c0001U >> (uVar16 & 0x1f) & 1" (binary_expression "0x403c0001U >> (uVar16 & 0x1f)" number_literal >> (parenthesized_expression "(uVar16 & 0x1f)" ( (binary_expression "uVar16 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (sized_type_specifier short) IDENT ;) (declaration (sized_type_specifier short) 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 (sized_type_specifier short) 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 ;) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (pointer_expression & IDENT) , (binary_expression IDENT + LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) & LIT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) + LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (unary_expression ! IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (unary_expression ! IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_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 ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_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 ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * IDENT) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT , (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement default : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (break_statement break ;)) (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 , (subscript_expression IDENT [ LIT ]) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) + (subscript_expression IDENT [ LIT ])) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) + (subscript_expression IDENT [ LIT ])) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) )))) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;) })) (expression_statement (assignment_expression IDENT = (unary_expression ! IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) + (subscript_expression IDENT [ LIT ])) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (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 ( (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) )))) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT && IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) || (unary_expression ! IDENT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * IDENT) == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT * LIT) + LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (pointer_expression & IDENT) , (binary_expression IDENT + LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , (subscript_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 < (subscript_expression IDENT [ LIT ])) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT , (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) )) * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (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 IDENT + 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 (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) }))) })) (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 IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) }))) })) (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 IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) ;) })) })) (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 IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) }))) })) (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 IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = 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 = (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 IDENT + 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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) }))) })) (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 IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (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 = (binary_expression IDENT | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) }))) })) (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 IDENT + LIT) )))) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;)) })) }))) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != (binary_expression IDENT * LIT)) && (binary_expression (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) ))) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))) < LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) - IDENT) )))) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) + (subscript_expression IDENT [ LIT ])) )) * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 (pointer_expression * IDENT) = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression IDENT + IDENT) + (binary_expression IDENT * LIT))) )) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (field_expression IDENT . field_identifier) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (field_expression IDENT . field_identifier) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (subscript_expression IDENT [ LIT ]) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * IDENT))) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 (pointer_expression * IDENT) = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) ;) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (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 )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))))))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT || (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT <= LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_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 , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_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 , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_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 , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_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 , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) + IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , LIT , (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT))) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_001d0cb0(int *param_1,int *param_2,int param_3)\n\n{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_001d0cb0(int *param_1,int *param_2,int param_3)" (identifier "FUN_001d0cb0") (parameter_list "(int *param_1,int *param_2,int param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  double dVar1;\n  double dVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  bool bVar6;\n  ushort uVar7;\n  int *piVar8;\n  double dVar9;\n  byte bVar10;\n  byte bVar11;\n  ushort uVar12;\n  int iVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  ushort *puVar20;\n  undefined2 *puVar21;\n  int iVar22;\n  undefined2 *puVar23;\n  char cVar24;\n  byte bVar25;\n  ushort uVar26;\n  uint uVar27;\n  int iVar28;\n  bool bVar29;\n  char *pcVar30;\n  undefined1 uVar31;\n  ushort *puVar32;\n  ushort *puVar33;\n  uint uVar34;\n  int *piVar35;\n  undefined4 *puVar36;\n  size_t sVar37;\n  char *pcVar38;\n  int iVar39;\n  int iVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  bool bVar42;\n  bool bVar43;\n  byte bVar44;\n  undefined4 uVar45;\n  char *pcVar46;\n  double dVar47;\n  undefined8 local_184;\n  byte local_17c;\n  undefined1 uStack_17b;\n  undefined2 uStack_17a;\n  int iStack_178;\n  int local_174;\n  int local_170;\n  char *local_168;\n  char *local_164;\n  int local_160;\n  uint local_14c;\n  int iStack_148;\n  uint local_144;\n  uint local_134;\n  int iStack_130;\n  int local_128;\n  int local_124;\n  short local_120;\n  short local_11c;\n  uint local_10c;\n  int local_108;\n  uint local_104;\n  int iStack_100;\n  uint local_e4;\n  int local_c8;\n  undefined4 local_c4;\n  int local_c0;\n  undefined4 local_bc;\n  int local_b8;\n  int local_b4;\n  undefined2 local_b0;\n  short local_ae;\n  uint local_ac;\n  size_t local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  uint local_9c;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  uint local_88;\n  double local_38;\n  double local_30;\n  double local_28;\n  int local_20;\n  \n  bVar44 = 0;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }\n  if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }\n  if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }\n  if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }\n  if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }\n  if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }\n  if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }\n  iVar13 = OpenBlob(param_1,param_2,4,param_3);\n  if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }\n  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);\n  bVar11 = 2;\n  if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }\n  iVar13 = GetImageOption(param_1,"bmp:format");\n  if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }\n  uVar15 = GetImageListLength(param_2);\n  local_10c = 0;\n  local_108 = 0;\n  uVar16 = param_2[1] - 3;\n  if (uVar16 < 0x1f) goto LAB_001d1cae;\n  do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "ushort uVar7;" (type_identifier "ushort") (identifier "uVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "double dVar9;" (primitive_type "double") (identifier "dVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "ushort uVar12;" (type_identifier "ushort") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "ushort *puVar20;" (type_identifier "ushort") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "undefined2 *puVar21;" (type_identifier "undefined2") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "undefined2 *puVar23;" (type_identifier "undefined2") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "char cVar24;" (primitive_type "char") (identifier "cVar24") (; ";")) (declaration "byte bVar25;" (type_identifier "byte") (identifier "bVar25") (; ";")) (declaration "ushort uVar26;" (type_identifier "ushort") (identifier "uVar26") (; ";")) (declaration "uint uVar27;" (type_identifier "uint") (identifier "uVar27") (; ";")) (declaration "int iVar28;" (primitive_type "int") (identifier "iVar28") (; ";")) (declaration "bool bVar29;" (primitive_type "bool") (identifier "bVar29") (; ";")) (declaration "char *pcVar30;" (primitive_type "char") (pointer_declarator "*pcVar30" (* "*") (identifier "pcVar30")) (; ";")) (declaration "undefined1 uVar31;" (type_identifier "undefined1") (identifier "uVar31") (; ";")) (declaration "ushort *puVar32;" (type_identifier "ushort") (pointer_declarator "*puVar32" (* "*") (identifier "puVar32")) (; ";")) (declaration "ushort *puVar33;" (type_identifier "ushort") (pointer_declarator "*puVar33" (* "*") (identifier "puVar33")) (; ";")) (declaration "uint uVar34;" (type_identifier "uint") (identifier "uVar34") (; ";")) (declaration "int *piVar35;" (primitive_type "int") (pointer_declarator "*piVar35" (* "*") (identifier "piVar35")) (; ";")) (declaration "undefined4 *puVar36;" (type_identifier "undefined4") (pointer_declarator "*puVar36" (* "*") (identifier "puVar36")) (; ";")) (declaration "size_t sVar37;" (primitive_type "size_t") (identifier "sVar37") (; ";")) (declaration "char *pcVar38;" (primitive_type "char") (pointer_declarator "*pcVar38" (* "*") (identifier "pcVar38")) (; ";")) (declaration "int iVar39;" (primitive_type "int") (identifier "iVar39") (; ";")) (declaration "int iVar40;" (primitive_type "int") (identifier "iVar40") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar41;" (primitive_type "bool") (identifier "bVar41") (; ";")) (declaration "bool bVar42;" (primitive_type "bool") (identifier "bVar42") (; ";")) (declaration "bool bVar43;" (primitive_type "bool") (identifier "bVar43") (; ";")) (declaration "byte bVar44;" (type_identifier "byte") (identifier "bVar44") (; ";")) (declaration "undefined4 uVar45;" (type_identifier "undefined4") (identifier "uVar45") (; ";")) (declaration "char *pcVar46;" (primitive_type "char") (pointer_declarator "*pcVar46" (* "*") (identifier "pcVar46")) (; ";")) (declaration "double dVar47;" (primitive_type "double") (identifier "dVar47") (; ";")) (declaration "undefined8 local_184;" (type_identifier "undefined8") (identifier "local_184") (; ";")) (declaration "byte local_17c;" (type_identifier "byte") (identifier "local_17c") (; ";")) (declaration "undefined1 uStack_17b;" (type_identifier "undefined1") (identifier "uStack_17b") (; ";")) (declaration "undefined2 uStack_17a;" (type_identifier "undefined2") (identifier "uStack_17a") (; ";")) (declaration "int iStack_178;" (primitive_type "int") (identifier "iStack_178") (; ";")) (declaration "int local_174;" (primitive_type "int") (identifier "local_174") (; ";")) (declaration "int local_170;" (primitive_type "int") (identifier "local_170") (; ";")) (declaration "char *local_168;" (primitive_type "char") (pointer_declarator "*local_168" (* "*") (identifier "local_168")) (; ";")) (declaration "char *local_164;" (primitive_type "char") (pointer_declarator "*local_164" (* "*") (identifier "local_164")) (; ";")) (declaration "int local_160;" (primitive_type "int") (identifier "local_160") (; ";")) (declaration "uint local_14c;" (type_identifier "uint") (identifier "local_14c") (; ";")) (declaration "int iStack_148;" (primitive_type "int") (identifier "iStack_148") (; ";")) (declaration "uint local_144;" (type_identifier "uint") (identifier "local_144") (; ";")) (declaration "uint local_134;" (type_identifier "uint") (identifier "local_134") (; ";")) (declaration "int iStack_130;" (primitive_type "int") (identifier "iStack_130") (; ";")) (declaration "int local_128;" (primitive_type "int") (identifier "local_128") (; ";")) (declaration "int local_124;" (primitive_type "int") (identifier "local_124") (; ";")) (declaration "short local_120;" (sized_type_specifier "short" (short "short")) (identifier "local_120") (; ";")) (declaration "short local_11c;" (sized_type_specifier "short" (short "short")) (identifier "local_11c") (; ";")) (declaration "uint local_10c;" (type_identifier "uint") (identifier "local_10c") (; ";")) (declaration "int local_108;" (primitive_type "int") (identifier "local_108") (; ";")) (declaration "uint local_104;" (type_identifier "uint") (identifier "local_104") (; ";")) (declaration "int iStack_100;" (primitive_type "int") (identifier "iStack_100") (; ";")) (declaration "uint local_e4;" (type_identifier "uint") (identifier "local_e4") (; ";")) (declaration "int local_c8;" (primitive_type "int") (identifier "local_c8") (; ";")) (declaration "undefined4 local_c4;" (type_identifier "undefined4") (identifier "local_c4") (; ";")) (declaration "int local_c0;" (primitive_type "int") (identifier "local_c0") (; ";")) (declaration "undefined4 local_bc;" (type_identifier "undefined4") (identifier "local_bc") (; ";")) (declaration "int local_b8;" (primitive_type "int") (identifier "local_b8") (; ";")) (declaration "int local_b4;" (primitive_type "int") (identifier "local_b4") (; ";")) (declaration "undefined2 local_b0;" (type_identifier "undefined2") (identifier "local_b0") (; ";")) (declaration "short local_ae;" (sized_type_specifier "short" (short "short")) (identifier "local_ae") (; ";")) (declaration "uint local_ac;" (type_identifier "uint") (identifier "local_ac") (; ";")) (declaration "size_t local_a8;" (primitive_type "size_t") (identifier "local_a8") (; ";")) (declaration "undefined4 local_a4;" (type_identifier "undefined4") (identifier "local_a4") (; ";")) (declaration "undefined4 local_a0;" (type_identifier "undefined4") (identifier "local_a0") (; ";")) (declaration "uint local_9c;" (type_identifier "uint") (identifier "local_9c") (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "undefined4 local_94;" (type_identifier "undefined4") (identifier "local_94") (; ";")) (declaration "undefined4 local_90;" (type_identifier "undefined4") (identifier "local_90") (; ";")) (declaration "undefined4 local_8c;" (type_identifier "undefined4") (identifier "local_8c") (; ";")) (declaration "uint local_88;" (type_identifier "uint") (identifier "local_88") (; ";")) (declaration "double local_38;" (primitive_type "double") (identifier "local_38") (; ";")) (declaration "double local_30;" (primitive_type "double") (identifier "local_30") (; ";")) (declaration "double local_28;" (primitive_type "double") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "bVar44 = 0;" (assignment_expression "bVar44 = 0" (identifier "bVar44") (= "=") (number_literal "0")) (; ";")) (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")) () ")"))))) (; ";")) (if_statement "if (param_1 == (int *)0x0) {\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" (if "if") (parenthesized_expression "(param_1 == (int *)0x0)" (( "(") (binary_expression "param_1 == (int *)0x0" (identifier "param_1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");\n  }" ({ "{") (expression_statement "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");" (call_expression "__assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" (identifier "__assert_fail") (argument_list "("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage")" (( "(") (string_literal ""image_info != (const ImageInfo *) NULL"" (" """) (string_content "image_info != (const ImageInfo *) NULL") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x6a1") (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1[0xc7d] != -0x54535255) {\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" (if "if") (parenthesized_expression "(param_1[0xc7d] != -0x54535255)" (( "(") (binary_expression "param_1[0xc7d] != -0x54535255" (subscript_expression "param_1[0xc7d]" (identifier "param_1") ([ "[") (number_literal "0xc7d") (] "]")) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");\n  }" ({ "{") (expression_statement "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage");" (call_expression "__assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" (identifier "__assert_fail") (argument_list "("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,\n                  "WriteBMPImage")" (( "(") (string_literal ""image_info->signature == MagickCoreSignature"" (" """) (string_content "image_info->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x6a2") (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == (int *)0x0) {\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" (if "if") (parenthesized_expression "(param_2 == (int *)0x0)" (( "(") (binary_expression "param_2 == (int *)0x0" (identifier "param_2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");\n  }" ({ "{") (expression_statement "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");" (call_expression "__assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" (identifier "__assert_fail") (argument_list "("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage")" (( "(") (string_literal ""image != (Image *) NULL"" (" """) (string_content "image != (Image *) NULL") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x6a3") (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2[0xcd1] != -0x54535255) {\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" (if "if") (parenthesized_expression "(param_2[0xcd1] != -0x54535255)" (( "(") (binary_expression "param_2[0xcd1] != -0x54535255" (subscript_expression "param_2[0xcd1]" (identifier "param_2") ([ "[") (number_literal "0xcd1") (] "]")) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");\n  }" ({ "{") (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" (identifier "__assert_fail") (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage")" (( "(") (string_literal ""image->signature == MagickCoreSignature"" (" """) (string_content "image->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x6a4") (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2[0xcca] != 0) {\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }" (if "if") (parenthesized_expression "(param_2[0xcca] != 0)" (( "(") (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);\n  }" ({ "{") (expression_statement "LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);" (call_expression "LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6)" (identifier "LogMagickEvent") (argument_list "(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6)" (( "(") (number_literal "0x8000") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x6a6") (, ",") (pointer_expression "&DAT_002b6e4e" (& "&") (identifier "DAT_002b6e4e")) (, ",") (binary_expression "param_2 + 0xc6" (identifier "param_2") (+ "+") (number_literal "0xc6")) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");\n  }" ({ "{") (expression_statement "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");" (call_expression "__assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" (identifier "__assert_fail") (argument_list "("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage")" (( "(") (string_literal ""exception != (ExceptionInfo *) NULL"" (" """) (string_content "exception != (ExceptionInfo *) NULL") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x6a7") (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_3 + 0x1c) != -0x54535255) {\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" (if "if") (parenthesized_expression "(*(int *)(param_3 + 0x1c) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_3 + 0x1c) != -0x54535255" (pointer_expression "*(int *)(param_3 + 0x1c)" (* "*") (cast_expression "(int *)(param_3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );\n  }" ({ "{") (expression_statement "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 );" (call_expression "__assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" (identifier "__assert_fail") (argument_list "("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"\n                 )" (( "(") (string_literal ""exception->signature == MagickCoreSignature"" (" """) (string_content "exception->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x6a8") (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = OpenBlob(param_1,param_2,4,param_3);" (assignment_expression "iVar13 = OpenBlob(param_1,param_2,4,param_3)" (identifier "iVar13") (= "=") (call_expression "OpenBlob(param_1,param_2,4,param_3)" (identifier "OpenBlob") (argument_list "(param_1,param_2,4,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "4") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }\n    return iVar13;\n  }" ({ "{") (labeled_statement "LAB_001d3a3a:\n    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\n    }" (statement_identifier "LAB_001d3a3a") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n      FUN_0029eab0();\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                    \n      FUN_0029eab0();\n    }" ({ "{") (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" (identifier "FUN_0029eab0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar13;" (return "return") (identifier "iVar13") (; ";")) (} "}"))) (expression_statement "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);" (assignment_expression "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a)" (identifier "iVar13") (= "=") (call_expression "LocaleCompare(param_1 + 0x7c,&DAT_002a227a)" (identifier "LocaleCompare") (argument_list "(param_1 + 0x7c,&DAT_002a227a)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) (, ",") (pointer_expression "&DAT_002a227a" (& "&") (identifier "DAT_002a227a")) () ")")))) (; ";")) (expression_statement "bVar11 = 2;" (assignment_expression "bVar11 = 2" (identifier "bVar11") (= "=") (number_literal "2")) (; ";")) (if_statement "if (iVar13 != 0) {\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);\n    bVar11 = (iVar13 != 0) + 3;\n  }" ({ "{") (expression_statement "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);" (assignment_expression "iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f)" (identifier "iVar13") (= "=") (call_expression "LocaleCompare(param_1 + 0x7c,&DAT_002a227f)" (identifier "LocaleCompare") (argument_list "(param_1 + 0x7c,&DAT_002a227f)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) (, ",") (pointer_expression "&DAT_002a227f" (& "&") (identifier "DAT_002a227f")) () ")")))) (; ";")) (expression_statement "bVar11 = (iVar13 != 0) + 3;" (assignment_expression "bVar11 = (iVar13 != 0) + 3" (identifier "bVar11") (= "=") (binary_expression "(iVar13 != 0) + 3" (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "iVar13 = GetImageOption(param_1,"bmp:format");" (assignment_expression "iVar13 = GetImageOption(param_1,"bmp:format")" (identifier "iVar13") (= "=") (call_expression "GetImageOption(param_1,"bmp:format")" (identifier "GetImageOption") (argument_list "(param_1,"bmp:format")" (( "(") (identifier "param_1") (, ",") (string_literal ""bmp:format"" (" """) (string_content "bmp:format") (" """)) () ")")))) (; ";")) (if_statement "if (iVar13 != 0) {\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);\n    bVar25 = 2;\n    if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }\n    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);\n    bVar10 = 3;\n    if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }\n    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);\n    bVar11 = 4;\n    if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }\n  }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x6b8") (, ",") (string_literal ""  Format=%s"" (" """) (string_content "  Format=%s") (" """)) (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "iVar14 = LocaleCompare(iVar13,&DAT_002cc136);" (assignment_expression "iVar14 = LocaleCompare(iVar13,&DAT_002cc136)" (identifier "iVar14") (= "=") (call_expression "LocaleCompare(iVar13,&DAT_002cc136)" (identifier "LocaleCompare") (argument_list "(iVar13,&DAT_002cc136)" (( "(") (identifier "iVar13") (, ",") (pointer_expression "&DAT_002cc136" (& "&") (identifier "DAT_002cc136")) () ")")))) (; ";")) (expression_statement "bVar25 = 2;" (assignment_expression "bVar25 = 2" (identifier "bVar25") (= "=") (number_literal "2")) (; ";")) (if_statement "if (iVar14 != 0) {\n      bVar25 = bVar11;\n    }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar25 = bVar11;\n    }" ({ "{") (expression_statement "bVar25 = bVar11;" (assignment_expression "bVar25 = bVar11" (identifier "bVar25") (= "=") (identifier "bVar11")) (; ";")) (} "}"))) (expression_statement "iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);" (assignment_expression "iVar14 = LocaleCompare(iVar13,&DAT_002cc13b)" (identifier "iVar14") (= "=") (call_expression "LocaleCompare(iVar13,&DAT_002cc13b)" (identifier "LocaleCompare") (argument_list "(iVar13,&DAT_002cc13b)" (( "(") (identifier "iVar13") (, ",") (pointer_expression "&DAT_002cc13b" (& "&") (identifier "DAT_002cc13b")) () ")")))) (; ";")) (expression_statement "bVar10 = 3;" (assignment_expression "bVar10 = 3" (identifier "bVar10") (= "=") (number_literal "3")) (; ";")) (if_statement "if (iVar14 != 0) {\n      bVar10 = bVar25;\n    }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar10 = bVar25;\n    }" ({ "{") (expression_statement "bVar10 = bVar25;" (assignment_expression "bVar10 = bVar25" (identifier "bVar10") (= "=") (identifier "bVar25")) (; ";")) (} "}"))) (expression_statement "iVar13 = LocaleCompare(iVar13,&DAT_002cc140);" (assignment_expression "iVar13 = LocaleCompare(iVar13,&DAT_002cc140)" (identifier "iVar13") (= "=") (call_expression "LocaleCompare(iVar13,&DAT_002cc140)" (identifier "LocaleCompare") (argument_list "(iVar13,&DAT_002cc140)" (( "(") (identifier "iVar13") (, ",") (pointer_expression "&DAT_002cc140" (& "&") (identifier "DAT_002cc140")) () ")")))) (; ";")) (expression_statement "bVar11 = 4;" (assignment_expression "bVar11 = 4" (identifier "bVar11") (= "=") (number_literal "4")) (; ";")) (if_statement "if (iVar13 != 0) {\n      bVar11 = bVar10;\n    }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar11 = bVar10;\n    }" ({ "{") (expression_statement "bVar11 = bVar10;" (assignment_expression "bVar11 = bVar10" (identifier "bVar11") (= "=") (identifier "bVar10")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar15 = GetImageListLength(param_2);" (assignment_expression "uVar15 = GetImageListLength(param_2)" (identifier "uVar15") (= "=") (call_expression "GetImageListLength(param_2)" (identifier "GetImageListLength") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "local_10c = 0;" (assignment_expression "local_10c = 0" (identifier "local_10c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_108 = 0;" (assignment_expression "local_108 = 0" (identifier "local_108") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = param_2[1] - 3;" (assignment_expression "uVar16 = param_2[1] - 3" (identifier "uVar16") (= "=") (binary_expression "param_2[1] - 3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "3"))) (; ";")) (if_statement "if (uVar16 < 0x1f) goto LAB_001d1cae;" (if "if") (parenthesized_expression "(uVar16 < 0x1f)" (( "(") (binary_expression "uVar16 < 0x1f" (identifier "uVar16") (< "<") (number_literal "0x1f")) () ")")) (goto_statement "goto LAB_001d1cae;" (goto "goto") (statement_identifier "LAB_001d1cae") (; ";"))) (do_statement "do {\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  } while( true );" (do "do") (compound_statement "{\n    TransformImageColorspace(param_2,0x17);\n    do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);\n  }" ({ "{") (expression_statement "TransformImageColorspace(param_2,0x17);" (call_expression "TransformImageColorspace(param_2,0x17)" (identifier "TransformImageColorspace") (argument_list "(param_2,0x17)" (( "(") (identifier "param_2") (, ",") (number_literal "0x17") () ")"))) (; ";")) (do_statement "do {\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);" (do "do") (compound_statement "{\n      puVar36 = &local_c4;\n      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }\n      if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }\n      local_98 = 0xff0000;\n      local_94 = 0xff00;\n      local_90 = 0xff;\n      local_8c = 0xff000000;\n      iVar14 = *param_2;\n      local_c0 = iVar13;\n      if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }\n      local_c4 = 0;\n      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;\n      uVar17 = uVar16 * 4;\n      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);\n      bVar41 = iVar13 != 0;\n      bVar6 = true;\n      if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }\n      if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }\n      iVar18 = param_2[6];\n      local_b0 = 1;\n      local_a4 = 0xb6d;\n      iVar28 = param_2[7];\n      local_a0 = 0xb6d;\n      sVar37 = uVar17 * iVar28;\n      local_128 = local_c8 + sVar37;\n      if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }\n      uVar27 = iVar18 + 0x100U;\n      if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }\n      local_b8 = iVar18;\n      local_b4 = iVar28;\n      local_a8 = sVar37;\n      local_88 = local_144;\n      local_124 = AcquireVirtualMemory(iVar28,uVar27);\n      piVar35 = param_2;\n      if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }\n      local_168 = (char *)GetVirtualMemoryBlob(local_124);\n      memset(local_168,0,sVar37);\n      uVar7 = CONCAT11(uStack_17b,local_17c);\n      switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }\nLAB_001d1490:\n      bVar42 = bVar11 != 2;\nLAB_001d149a:\n      bVar29 = bVar42;\n      if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }\n      WriteBlob(param_2,2);\n      WriteBlobLSBLong(param_2,local_128);\n      WriteBlobLSBLong(param_2,0);\n      WriteBlobLSBLong(param_2,local_c0);\n      if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }\n      sVar37 = local_a8;\n      if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }\n      WriteBlob(param_2,sVar37);\n      if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }\n      RelinquishVirtualMemory(local_124);\n      iVar13 = GetNextImageInList(param_2);\n      if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }\n      param_2 = (int *)SyncNextImageInList(param_2);\n      uVar17 = local_10c + 1;\n      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);\n      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);\n      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;\n      uVar16 = param_2[1] - 3;\n      local_10c = uVar17;\n      local_108 = iVar14;\n      if (0x1e < uVar16) break;\nLAB_001d1cae:\n    }" ({ "{") (expression_statement "puVar36 = &local_c4;" (assignment_expression "puVar36 = &local_c4" (identifier "puVar36") (= "=") (pointer_expression "&local_c4" (& "&") (identifier "local_c4"))) (; ";")) (for_statement "for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "iVar13 = 0x29" (identifier "iVar13") (= "=") (number_literal "0x29")) (; ";") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n        *puVar36 = 0;\n        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar36 = 0;" (assignment_expression "*puVar36 = 0" (pointer_expression "*puVar36" (* "*") (identifier "puVar36")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar36 = puVar36 + (uint)bVar44 * -2 + 1;" (assignment_expression "puVar36 = puVar36 + (uint)bVar44 * -2 + 1" (identifier "puVar36") (= "=") (binary_expression "puVar36 + (uint)bVar44 * -2 + 1" (binary_expression "puVar36 + (uint)bVar44 * -2" (identifier "puVar36") (+ "+") (binary_expression "(uint)bVar44 * -2" (cast_expression "(uint)bVar44" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar44")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (bVar11 == 2) {\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }\n      else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" (if "if") (parenthesized_expression "(bVar11 == 2)" (( "(") (binary_expression "bVar11 == 2" (identifier "bVar11") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        local_c8 = 0x1a;\n        iVar13 = 0x1a;\n      }" ({ "{") (expression_statement "local_c8 = 0x1a;" (assignment_expression "local_c8 = 0x1a" (identifier "local_c8") (= "=") (number_literal "0x1a")) (; ";")) (expression_statement "iVar13 = 0x1a;" (assignment_expression "iVar13 = 0x1a" (identifier "iVar13") (= "=") (number_literal "0x1a")) (; ";")) (} "}")) (else_clause "else {\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" (else "else") (compound_statement "{\n        local_c8 = 0x36;\n        iVar13 = 0x36;\n      }" ({ "{") (expression_statement "local_c8 = 0x36;" (assignment_expression "local_c8 = 0x36" (identifier "local_c8") (= "=") (number_literal "0x36")) (; ";")) (expression_statement "iVar13 = 0x36;" (assignment_expression "iVar13 = 0x36" (identifier "iVar13") (= "=") (number_literal "0x36")) (; ";")) (} "}")))) (expression_statement "local_98 = 0xff0000;" (assignment_expression "local_98 = 0xff0000" (identifier "local_98") (= "=") (number_literal "0xff0000")) (; ";")) (expression_statement "local_94 = 0xff00;" (assignment_expression "local_94 = 0xff00" (identifier "local_94") (= "=") (number_literal "0xff00")) (; ";")) (expression_statement "local_90 = 0xff;" (assignment_expression "local_90 = 0xff" (identifier "local_90") (= "=") (number_literal "0xff")) (; ";")) (expression_statement "local_8c = 0xff000000;" (assignment_expression "local_8c = 0xff000000" (identifier "local_8c") (= "=") (number_literal "0xff000000")) (; ";")) (expression_statement "iVar14 = *param_2;" (assignment_expression "iVar14 = *param_2" (identifier "iVar14") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_c0 = iVar13;" (assignment_expression "local_c0 = iVar13" (identifier "local_c0") (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (iVar14 == 2) {\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }\n      else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" (if "if") (parenthesized_expression "(iVar14 == 2)" (( "(") (binary_expression "iVar14 == 2" (identifier "iVar14") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        uVar16 = param_2[9];\n        if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }\nLAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }\n        local_9c = local_144;\n        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }\n        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);\n        iVar14 = 0;\n        local_c8 = iVar13;\n      }" ({ "{") (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" (identifier "uVar16") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (0x100 < uVar16) {\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }" (if "if") (parenthesized_expression "(0x100 < uVar16)" (( "(") (binary_expression "0x100 < uVar16" (number_literal "0x100") (< "<") (identifier "uVar16")) () ")")) (compound_statement "{\n          SetImageStorageClass(param_2,1);\n          iVar14 = *param_2;\n          goto LAB_001d0f25;\n        }" ({ "{") (expression_statement "SetImageStorageClass(param_2,1);" (call_expression "SetImageStorageClass(param_2,1)" (identifier "SetImageStorageClass") (argument_list "(param_2,1)" (( "(") (identifier "param_2") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar14 = *param_2;" (assignment_expression "iVar14 = *param_2" (identifier "iVar14") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (goto_statement "goto LAB_001d0f25;" (goto "goto") (statement_identifier "LAB_001d0f25") (; ";")) (} "}"))) (labeled_statement "LAB_001d0f31:\n        if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" (statement_identifier "LAB_001d0f31") (: ":") (if_statement "if (uVar16 < 3) {\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }\n        else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" (if "if") (parenthesized_expression "(uVar16 < 3)" (( "(") (binary_expression "uVar16 < 3" (identifier "uVar16") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          local_ae = 1;\n          if (*param_1 == 0x13) goto LAB_001d36c0;\nLAB_001d0f54:\n          local_17c = (byte)local_ae;\n          local_144 = 1 << (local_17c & 0x1f);\n          uStack_17b = (undefined1)((ushort)local_ae >> 8);\n        }" ({ "{") (expression_statement "local_ae = 1;" (assignment_expression "local_ae = 1" (identifier "local_ae") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*param_1 == 0x13) goto LAB_001d36c0;" (if "if") (parenthesized_expression "(*param_1 == 0x13)" (( "(") (binary_expression "*param_1 == 0x13" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0x13")) () ")")) (goto_statement "goto LAB_001d36c0;" (goto "goto") (statement_identifier "LAB_001d36c0") (; ";"))) (labeled_statement "LAB_001d0f54:\n          local_17c = (byte)local_ae;" (statement_identifier "LAB_001d0f54") (: ":") (expression_statement "local_17c = (byte)local_ae;" (assignment_expression "local_17c = (byte)local_ae" (identifier "local_17c") (= "=") (cast_expression "(byte)local_ae" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_ae"))) (; ";"))) (expression_statement "local_144 = 1 << (local_17c & 0x1f);" (assignment_expression "local_144 = 1 << (local_17c & 0x1f)" (identifier "local_144") (= "=") (binary_expression "1 << (local_17c & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(local_17c & 0x1f)" (( "(") (binary_expression "local_17c & 0x1f" (identifier "local_17c") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uStack_17b = (undefined1)((ushort)local_ae >> 8);" (assignment_expression "uStack_17b = (undefined1)((ushort)local_ae >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)((ushort)local_ae >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((ushort)local_ae >> 8)" (( "(") (binary_expression "(ushort)local_ae >> 8" (cast_expression "(ushort)local_ae" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "local_ae")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" (else "else") (compound_statement "{\n          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;\n          if (*param_1 != 0x13) goto LAB_001d0f54;\nLAB_001d36c0:\n          local_144 = 0x100;\n          local_ae = 8;\n          local_17c = 8;\n          uStack_17b = 0;\n        }" ({ "{") (expression_statement "local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;" (assignment_expression "local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8" (identifier "local_ae") (= "=") (binary_expression "(-(ushort)(uVar16 < 0x11) & 0xfffc) + 8" (parenthesized_expression "(-(ushort)(uVar16 < 0x11) & 0xfffc)" (( "(") (binary_expression "-(ushort)(uVar16 < 0x11) & 0xfffc" (unary_expression "-(ushort)(uVar16 < 0x11)" (- "-") (call_expression "(ushort)(uVar16 < 0x11)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar16 < 0x11)" (( "(") (binary_expression "uVar16 < 0x11" (identifier "uVar16") (< "<") (number_literal "0x11")) () ")")))) (& "&") (number_literal "0xfffc")) () ")")) (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (*param_1 != 0x13) goto LAB_001d0f54;" (if "if") (parenthesized_expression "(*param_1 != 0x13)" (( "(") (binary_expression "*param_1 != 0x13" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0x13")) () ")")) (goto_statement "goto LAB_001d0f54;" (goto "goto") (statement_identifier "LAB_001d0f54") (; ";"))) (labeled_statement "LAB_001d36c0:\n          local_144 = 0x100;" (statement_identifier "LAB_001d36c0") (: ":") (expression_statement "local_144 = 0x100;" (assignment_expression "local_144 = 0x100" (identifier "local_144") (= "=") (number_literal "0x100")) (; ";"))) (expression_statement "local_ae = 8;" (assignment_expression "local_ae = 8" (identifier "local_ae") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_17c = 8;" (assignment_expression "local_17c = 8" (identifier "local_17c") (= "=") (number_literal "8")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (} "}"))))) (expression_statement "local_9c = local_144;" (assignment_expression "local_9c = local_144" (identifier "local_9c") (= "=") (identifier "local_144")) (; ";")) (if_statement "if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }\n        else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" (if "if") (parenthesized_expression "((param_2[0xa5] == 0) && (uVar16 <= local_144))" (( "(") (binary_expression "(param_2[0xa5] == 0) && (uVar16 <= local_144)" (parenthesized_expression "(param_2[0xa5] == 0)" (( "(") (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar16 <= local_144)" (( "(") (binary_expression "uVar16 <= local_144" (identifier "uVar16") (<= "<=") (identifier "local_144")) () ")"))) () ")")) (compound_statement "{\n          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));\n          iVar13 = local_c0;\n          if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }\n        }" ({ "{") (expression_statement "local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));" (assignment_expression "local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f))" (identifier "local_c0") (= "=") (binary_expression "iVar13 + (3 << ((byte)local_ae & 0x1f))" (identifier "iVar13") (+ "+") (parenthesized_expression "(3 << ((byte)local_ae & 0x1f))" (( "(") (binary_expression "3 << ((byte)local_ae & 0x1f)" (number_literal "3") (<< "<<") (parenthesized_expression "((byte)local_ae & 0x1f)" (( "(") (binary_expression "(byte)local_ae & 0x1f" (cast_expression "(byte)local_ae" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_ae")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar13 = local_c0;" (assignment_expression "iVar13 = local_c0" (identifier "iVar13") (= "=") (identifier "local_c0")) (; ";")) (if_statement "if (bVar11 != 2) {\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }" (if "if") (parenthesized_expression "(bVar11 != 2)" (( "(") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n            local_c0 = local_c0 + local_144;\n            iVar13 = local_c0;\n          }" ({ "{") (expression_statement "local_c0 = local_c0 + local_144;" (assignment_expression "local_c0 = local_c0 + local_144" (identifier "local_c0") (= "=") (binary_expression "local_c0 + local_144" (identifier "local_c0") (+ "+") (identifier "local_144"))) (; ";")) (expression_statement "iVar13 = local_c0;" (assignment_expression "iVar13 = local_c0" (identifier "iVar13") (= "=") (identifier "local_c0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" (else "else") (compound_statement "{\n          SetImageStorageClass(param_2,1);\n          if (*param_2 == 1) goto LAB_001d3250;\n        }" ({ "{") (expression_statement "SetImageStorageClass(param_2,1);" (call_expression "SetImageStorageClass(param_2,1)" (identifier "SetImageStorageClass") (argument_list "(param_2,1)" (( "(") (identifier "param_2") (, ",") (number_literal "1") () ")"))) (; ";")) (if_statement "if (*param_2 == 1) goto LAB_001d3250;" (if "if") (parenthesized_expression "(*param_2 == 1)" (( "(") (binary_expression "*param_2 == 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_001d3250;" (goto "goto") (statement_identifier "LAB_001d3250") (; ";"))) (} "}")))) (expression_statement "uVar16 = (uint)CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar16 = (uint)CONCAT11(uStack_17b,local_17c)" (identifier "uVar16") (= "=") (cast_expression "(uint)CONCAT11(uStack_17b,local_17c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))))) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_c8 = iVar13;" (assignment_expression "local_c8 = iVar13" (identifier "local_c8") (= "=") (identifier "iVar13")) (; ";")) (} "}")) (else_clause "else {\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" (else "else") (compound_statement "{\nLAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }\nLAB_001d3250:\n        local_9c = 0;\n        iVar13 = GetImageOption(param_1,"bmp:subtype");\n        if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }\n      }" ({ "{") (labeled_statement "LAB_001d0f25:\n        if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" (statement_identifier "LAB_001d0f25") (: ":") (if_statement "if (iVar14 != 1) {\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" (if "if") (parenthesized_expression "(iVar14 != 1)" (( "(") (binary_expression "iVar14 != 1" (identifier "iVar14") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          uVar16 = param_2[9];\n          goto LAB_001d0f31;\n        }" ({ "{") (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" (identifier "uVar16") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (goto_statement "goto LAB_001d0f31;" (goto "goto") (statement_identifier "LAB_001d0f31") (; ";")) (} "}")))) (labeled_statement "LAB_001d3250:\n        local_9c = 0;" (statement_identifier "LAB_001d3250") (: ":") (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar13 = GetImageOption(param_1,"bmp:subtype");" (assignment_expression "iVar13 = GetImageOption(param_1,"bmp:subtype")" (identifier "iVar13") (= "=") (call_expression "GetImageOption(param_1,"bmp:subtype")" (identifier "GetImageOption") (argument_list "(param_1,"bmp:subtype")" (( "(") (identifier "param_1") (, ",") (string_literal ""bmp:subtype"" (" """) (string_content "bmp:subtype") (" """)) () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }\n        else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }\n        }" ({ "{") (if_statement "if (bVar11 == 4) {\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }\n          else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" (if "if") (parenthesized_expression "(bVar11 == 4)" (( "(") (binary_expression "bVar11 == 4" (identifier "bVar11") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n            if (param_2[0xa5] == 0) goto LAB_001d3e67;\nLAB_001d3d56:\n            local_ac = 3;\n            local_ae = 0x20;\n            local_144 = 0;\n            local_17c = 0x20;\n            uStack_17b = 0;\n            uVar16 = 0x20;\n            iVar14 = 0;\n          }" ({ "{") (if_statement "if (param_2[0xa5] == 0) goto LAB_001d3e67;" (if "if") (parenthesized_expression "(param_2[0xa5] == 0)" (( "(") (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d3e67;" (goto "goto") (statement_identifier "LAB_001d3e67") (; ";"))) (labeled_statement "LAB_001d3d56:\n            local_ac = 3;" (statement_identifier "LAB_001d3d56") (: ":") (expression_statement "local_ac = 3;" (assignment_expression "local_ac = 3" (identifier "local_ac") (= "=") (number_literal "3")) (; ";"))) (expression_statement "local_ae = 0x20;" (assignment_expression "local_ae = 0x20" (identifier "local_ae") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" (identifier "local_144") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" (identifier "local_17c") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0x20;" (assignment_expression "uVar16 = 0x20" (identifier "uVar16") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" (else "else") (compound_statement "{\nLAB_001d3da8:\n            local_ac = 0;\n            local_ae = 0x18;\n            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }\n          }" ({ "{") (labeled_statement "LAB_001d3da8:\n            local_ac = 0;" (statement_identifier "LAB_001d3da8") (: ":") (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" (identifier "local_ac") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_ae = 0x18;" (assignment_expression "local_ae = 0x18" (identifier "local_ae") (= "=") (number_literal "0x18")) (; ";")) (if_statement "if ((bVar11 == 3) && (param_2[0xa5] != 0)) {\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }\n            else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" (if "if") (parenthesized_expression "((bVar11 == 3) && (param_2[0xa5] != 0))" (( "(") (binary_expression "(bVar11 == 3) && (param_2[0xa5] != 0)" (parenthesized_expression "(bVar11 == 3)" (( "(") (binary_expression "bVar11 == 3" (identifier "bVar11") (== "==") (number_literal "3")) () ")")) (&& "&&") (parenthesized_expression "(param_2[0xa5] != 0)" (( "(") (binary_expression "param_2[0xa5] != 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              uVar45 = GetImageOption(param_1,"bmp3:alpha");\n              iVar13 = IsStringTrue(uVar45);\n              if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }\n            }" ({ "{") (expression_statement "uVar45 = GetImageOption(param_1,"bmp3:alpha");" (assignment_expression "uVar45 = GetImageOption(param_1,"bmp3:alpha")" (identifier "uVar45") (= "=") (call_expression "GetImageOption(param_1,"bmp3:alpha")" (identifier "GetImageOption") (argument_list "(param_1,"bmp3:alpha")" (( "(") (identifier "param_1") (, ",") (string_literal ""bmp3:alpha"" (" """) (string_content "bmp3:alpha") (" """)) () ")")))) (; ";")) (expression_statement "iVar13 = IsStringTrue(uVar45);" (assignment_expression "iVar13 = IsStringTrue(uVar45)" (identifier "iVar13") (= "=") (call_expression "IsStringTrue(uVar45)" (identifier "IsStringTrue") (argument_list "(uVar45)" (( "(") (identifier "uVar45") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }\n              else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar16 = 0x18;\n                iVar14 = 0;\n                local_17c = 0x18;\n                uStack_17b = 0;\n                local_144 = 0;\n              }" ({ "{") (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" (identifier "uVar16") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" (identifier "local_17c") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" (identifier "local_144") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" (else "else") (compound_statement "{\n                local_144 = 0;\n                uVar16 = 0x20;\n                local_ae = 0x20;\n                local_17c = 0x20;\n                uStack_17b = 0;\n                iVar14 = 0;\n              }" ({ "{") (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" (identifier "local_144") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0x20;" (assignment_expression "uVar16 = 0x20" (identifier "uVar16") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "local_ae = 0x20;" (assignment_expression "local_ae = 0x20" (identifier "local_ae") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "local_17c = 0x20;" (assignment_expression "local_17c = 0x20" (identifier "local_17c") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" (else "else") (compound_statement "{\nLAB_001d3e67:\n              local_ac = 0;\n              local_ae = 0x18;\n              local_144 = 0;\n              uVar16 = 0x18;\n              local_17c = 0x18;\n              uStack_17b = 0;\n              iVar14 = 0;\n            }" ({ "{") (labeled_statement "LAB_001d3e67:\n              local_ac = 0;" (statement_identifier "LAB_001d3e67") (: ":") (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" (identifier "local_ac") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_ae = 0x18;" (assignment_expression "local_ae = 0x18" (identifier "local_ae") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" (identifier "local_144") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" (identifier "uVar16") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "local_17c = 0x18;" (assignment_expression "local_17c = 0x18" (identifier "local_17c") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" (else "else") (compound_statement "{\n          if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }\n          local_ac = 3;\n          local_ae = 0x10;\n          local_144 = 0;\n          local_17c = 0x10;\n          uStack_17b = 0;\n          uVar16 = 0x10;\n        }" ({ "{") (if_statement "if (param_2[0xa5] == 0) {\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }\n          else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" (if "if") (parenthesized_expression "(param_2[0xa5] == 0)" (( "(") (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar14 = LocaleNCompare(iVar13,"RGB555");\n            if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }\n          }" ({ "{") (expression_statement "iVar14 = LocaleNCompare(iVar13,"RGB555");" (assignment_expression "iVar14 = LocaleNCompare(iVar13,"RGB555")" (identifier "iVar14") (= "=") (call_expression "LocaleNCompare(iVar13,"RGB555")" (identifier "LocaleNCompare") (argument_list "(iVar13,"RGB555")" (( "(") (identifier "iVar13") (, ",") (string_literal ""RGB555"" (" """) (string_content "RGB555") (" """)) () ")")))) (; ";")) (if_statement "if (iVar14 == 0) {\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 1;\n            }" ({ "{") (expression_statement "local_98 = 0x7c00;" (assignment_expression "local_98 = 0x7c00" (identifier "local_98") (= "=") (number_literal "0x7c00")) (; ";")) (expression_statement "local_94 = 0x3e0;" (assignment_expression "local_94 = 0x3e0" (identifier "local_94") (= "=") (number_literal "0x3e0")) (; ";")) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" (identifier "local_90") (= "=") (number_literal "0x1f")) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" (identifier "iVar14") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" (else "else") (compound_statement "{\n              iVar13 = LocaleNCompare(iVar13,"RGB565");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0xf800;\n              local_94 = 0x7e0;\n              local_90 = 0x1f;\n              local_8c = 0;\n              iVar14 = 2;\n            }" ({ "{") (expression_statement "iVar13 = LocaleNCompare(iVar13,"RGB565");" (assignment_expression "iVar13 = LocaleNCompare(iVar13,"RGB565")" (identifier "iVar13") (= "=") (call_expression "LocaleNCompare(iVar13,"RGB565")" (identifier "LocaleNCompare") (argument_list "(iVar13,"RGB565")" (( "(") (identifier "iVar13") (, ",") (string_literal ""RGB565"" (" """) (string_content "RGB565") (" """)) () ")")))) (; ";")) (if_statement "if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                if (bVar11 == 4) goto LAB_001d3e67;\n                goto LAB_001d3da8;\n              }" ({ "{") (if_statement "if (bVar11 == 4) goto LAB_001d3e67;" (if "if") (parenthesized_expression "(bVar11 == 4)" (( "(") (binary_expression "bVar11 == 4" (identifier "bVar11") (== "==") (number_literal "4")) () ")")) (goto_statement "goto LAB_001d3e67;" (goto "goto") (statement_identifier "LAB_001d3e67") (; ";"))) (goto_statement "goto LAB_001d3da8;" (goto "goto") (statement_identifier "LAB_001d3da8") (; ";")) (} "}"))) (expression_statement "local_98 = 0xf800;" (assignment_expression "local_98 = 0xf800" (identifier "local_98") (= "=") (number_literal "0xf800")) (; ";")) (expression_statement "local_94 = 0x7e0;" (assignment_expression "local_94 = 0x7e0" (identifier "local_94") (= "=") (number_literal "0x7e0")) (; ";")) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" (identifier "local_90") (= "=") (number_literal "0x1f")) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = 2;" (assignment_expression "iVar14 = 2" (identifier "iVar14") (= "=") (number_literal "2")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" (else "else") (compound_statement "{\n            iVar14 = LocaleNCompare(iVar13,"ARGB4444");\n            if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }\n          }" ({ "{") (expression_statement "iVar14 = LocaleNCompare(iVar13,"ARGB4444");" (assignment_expression "iVar14 = LocaleNCompare(iVar13,"ARGB4444")" (identifier "iVar14") (= "=") (call_expression "LocaleNCompare(iVar13,"ARGB4444")" (identifier "LocaleNCompare") (argument_list "(iVar13,"ARGB4444")" (( "(") (identifier "iVar13") (, ",") (string_literal ""ARGB4444"" (" """) (string_content "ARGB4444") (" """)) () ")")))) (; ";")) (if_statement "if (iVar14 == 0) {\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }\n            else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_98 = 0xf00;\n              local_94 = 0xf0;\n              local_90 = 0xf;\n              local_8c = 0xf000;\n              iVar14 = 3;\n            }" ({ "{") (expression_statement "local_98 = 0xf00;" (assignment_expression "local_98 = 0xf00" (identifier "local_98") (= "=") (number_literal "0xf00")) (; ";")) (expression_statement "local_94 = 0xf0;" (assignment_expression "local_94 = 0xf0" (identifier "local_94") (= "=") (number_literal "0xf0")) (; ";")) (expression_statement "local_90 = 0xf;" (assignment_expression "local_90 = 0xf" (identifier "local_90") (= "=") (number_literal "0xf")) (; ";")) (expression_statement "local_8c = 0xf000;" (assignment_expression "local_8c = 0xf000" (identifier "local_8c") (= "=") (number_literal "0xf000")) (; ";")) (expression_statement "iVar14 = 3;" (assignment_expression "iVar14 = 3" (identifier "iVar14") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" (else "else") (compound_statement "{\n              iVar13 = LocaleNCompare(iVar13,"ARGB1555");\n              if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }\n              local_98 = 0x7c00;\n              local_94 = 0x3e0;\n              local_90 = 0x1f;\n              local_8c = 0x8000;\n              iVar14 = 4;\n            }" ({ "{") (expression_statement "iVar13 = LocaleNCompare(iVar13,"ARGB1555");" (assignment_expression "iVar13 = LocaleNCompare(iVar13,"ARGB1555")" (identifier "iVar13") (= "=") (call_expression "LocaleNCompare(iVar13,"ARGB1555")" (identifier "LocaleNCompare") (argument_list "(iVar13,"ARGB1555")" (( "(") (identifier "iVar13") (, ",") (string_literal ""ARGB1555"" (" """) (string_content "ARGB1555") (" """)) () ")")))) (; ";")) (if_statement "if (iVar13 != 0) {\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                if (bVar11 == 4) goto LAB_001d3d56;\n                goto LAB_001d3da8;\n              }" ({ "{") (if_statement "if (bVar11 == 4) goto LAB_001d3d56;" (if "if") (parenthesized_expression "(bVar11 == 4)" (( "(") (binary_expression "bVar11 == 4" (identifier "bVar11") (== "==") (number_literal "4")) () ")")) (goto_statement "goto LAB_001d3d56;" (goto "goto") (statement_identifier "LAB_001d3d56") (; ";"))) (goto_statement "goto LAB_001d3da8;" (goto "goto") (statement_identifier "LAB_001d3da8") (; ";")) (} "}"))) (expression_statement "local_98 = 0x7c00;" (assignment_expression "local_98 = 0x7c00" (identifier "local_98") (= "=") (number_literal "0x7c00")) (; ";")) (expression_statement "local_94 = 0x3e0;" (assignment_expression "local_94 = 0x3e0" (identifier "local_94") (= "=") (number_literal "0x3e0")) (; ";")) (expression_statement "local_90 = 0x1f;" (assignment_expression "local_90 = 0x1f" (identifier "local_90") (= "=") (number_literal "0x1f")) (; ";")) (expression_statement "local_8c = 0x8000;" (assignment_expression "local_8c = 0x8000" (identifier "local_8c") (= "=") (number_literal "0x8000")) (; ";")) (expression_statement "iVar14 = 4;" (assignment_expression "iVar14 = 4" (identifier "iVar14") (= "=") (number_literal "4")) (; ";")) (} "}")))) (} "}")))) (expression_statement "local_ac = 3;" (assignment_expression "local_ac = 3" (identifier "local_ac") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_ae = 0x10;" (assignment_expression "local_ae = 0x10" (identifier "local_ae") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "local_144 = 0;" (assignment_expression "local_144 = 0" (identifier "local_144") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_17c = 0x10;" (assignment_expression "local_17c = 0x10" (identifier "local_17c") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0x10;" (assignment_expression "uVar16 = 0x10" (identifier "uVar16") (= "=") (number_literal "0x10")) (; ";")) (} "}")))) (} "}")))) (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" (identifier "local_c4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = uVar16 * param_2[6] + 0x1f >> 5;" (assignment_expression "uVar16 = uVar16 * param_2[6] + 0x1f >> 5" (identifier "uVar16") (= "=") (binary_expression "uVar16 * param_2[6] + 0x1f >> 5" (binary_expression "uVar16 * param_2[6] + 0x1f" (binary_expression "uVar16 * param_2[6]" (identifier "uVar16") (* "*") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (number_literal "0x1f")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "uVar17 = uVar16 * 4;" (assignment_expression "uVar17 = uVar16 * 4" (identifier "uVar17") (= "=") (binary_expression "uVar16 * 4" (identifier "uVar16") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar13 = GetImageProfile(param_2,&DAT_002a81ca);" (assignment_expression "iVar13 = GetImageProfile(param_2,&DAT_002a81ca)" (identifier "iVar13") (= "=") (call_expression "GetImageProfile(param_2,&DAT_002a81ca)" (identifier "GetImageProfile") (argument_list "(param_2,&DAT_002a81ca)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&DAT_002a81ca" (& "&") (identifier "DAT_002a81ca")) () ")")))) (; ";")) (expression_statement "bVar41 = iVar13 != 0;" (assignment_expression "bVar41 = iVar13 != 0" (identifier "bVar41") (= "=") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (if_statement "if (param_2[0x75] == 0 && !bVar41) {\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }" (if "if") (parenthesized_expression "(param_2[0x75] == 0 && !bVar41)" (( "(") (binary_expression "param_2[0x75] == 0 && !bVar41" (binary_expression "param_2[0x75] == 0" (subscript_expression "param_2[0x75]" (identifier "param_2") ([ "[") (number_literal "0x75") (] "]")) (== "==") (number_literal "0")) (&& "&&") (unary_expression "!bVar41" (! "!") (identifier "bVar41"))) () ")")) (compound_statement "{\n        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;\n      }" ({ "{") (expression_statement "bVar6 = *(double *)(param_2 + 0x5b) != 0.0;" (assignment_expression "bVar6 = *(double *)(param_2 + 0x5b) != 0.0" (identifier "bVar6") (= "=") (binary_expression "*(double *)(param_2 + 0x5b) != 0.0" (pointer_expression "*(double *)(param_2 + 0x5b)" (* "*") (cast_expression "(double *)(param_2 + 0x5b)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5b)" (( "(") (binary_expression "param_2 + 0x5b" (identifier "param_2") (+ "+") (number_literal "0x5b")) () ")")))) (!= "!=") (number_literal "0.0"))) (; ";")) (} "}"))) (if_statement "if (bVar11 == 2) {\n        local_bc = 0xc;\n      }\n      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" (if "if") (parenthesized_expression "(bVar11 == 2)" (( "(") (binary_expression "bVar11 == 2" (identifier "bVar11") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        local_bc = 0xc;\n      }" ({ "{") (expression_statement "local_bc = 0xc;" (assignment_expression "local_bc = 0xc" (identifier "local_bc") (= "=") (number_literal "0xc")) (; ";")) (} "}")) (else_clause "else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" (else "else") (if_statement "if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {\n        local_bc = 0x28;\n        bVar11 = 3;\n      }\n      else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" (if "if") (parenthesized_expression "((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0))" (( "(") (binary_expression "(bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)" (parenthesized_expression "(bVar11 == 3)" (( "(") (binary_expression "bVar11 == 3" (identifier "bVar11") (== "==") (number_literal "3")) () ")")) (|| "||") (parenthesized_expression "(!bVar6 && param_2[0xa5] == 0)" (( "(") (binary_expression "!bVar6 && param_2[0xa5] == 0" (unary_expression "!bVar6" (! "!") (identifier "bVar6")) (&& "&&") (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        local_bc = 0x28;\n        bVar11 = 3;\n      }" ({ "{") (expression_statement "local_bc = 0x28;" (assignment_expression "local_bc = 0x28" (identifier "local_bc") (= "=") (number_literal "0x28")) (; ";")) (expression_statement "bVar11 = 3;" (assignment_expression "bVar11 = 3" (identifier "bVar11") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" (else "else") (compound_statement "{\n        if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }\n        local_c8 = local_c8 + iVar18;\n        bVar11 = 4;\n        local_c0 = local_c0 + iVar18;\n      }" ({ "{") (if_statement "if (param_2[0x75] == 0 && !bVar41) {\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }\n        else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" (if "if") (parenthesized_expression "(param_2[0x75] == 0 && !bVar41)" (( "(") (binary_expression "param_2[0x75] == 0 && !bVar41" (binary_expression "param_2[0x75] == 0" (subscript_expression "param_2[0x75]" (identifier "param_2") ([ "[") (number_literal "0x75") (] "]")) (== "==") (number_literal "0")) (&& "&&") (unary_expression "!bVar41" (! "!") (identifier "bVar41"))) () ")")) (compound_statement "{\n          local_bc = 0x6c;\n          iVar18 = 0x44;\n        }" ({ "{") (expression_statement "local_bc = 0x6c;" (assignment_expression "local_bc = 0x6c" (identifier "local_bc") (= "=") (number_literal "0x6c")) (; ";")) (expression_statement "iVar18 = 0x44;" (assignment_expression "iVar18 = 0x44" (identifier "iVar18") (= "=") (number_literal "0x44")) (; ";")) (} "}")) (else_clause "else {\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" (else "else") (compound_statement "{\n          local_bc = 0x7c;\n          iVar18 = 0x54;\n        }" ({ "{") (expression_statement "local_bc = 0x7c;" (assignment_expression "local_bc = 0x7c" (identifier "local_bc") (= "=") (number_literal "0x7c")) (; ";")) (expression_statement "iVar18 = 0x54;" (assignment_expression "iVar18 = 0x54" (identifier "iVar18") (= "=") (number_literal "0x54")) (; ";")) (} "}")))) (expression_statement "local_c8 = local_c8 + iVar18;" (assignment_expression "local_c8 = local_c8 + iVar18" (identifier "local_c8") (= "=") (binary_expression "local_c8 + iVar18" (identifier "local_c8") (+ "+") (identifier "iVar18"))) (; ";")) (expression_statement "bVar11 = 4;" (assignment_expression "bVar11 = 4" (identifier "bVar11") (= "=") (number_literal "4")) (; ";")) (expression_statement "local_c0 = local_c0 + iVar18;" (assignment_expression "local_c0 = local_c0 + iVar18" (identifier "local_c0") (= "=") (binary_expression "local_c0 + iVar18" (identifier "local_c0") (+ "+") (identifier "iVar18"))) (; ";")) (} "}")))))) (expression_statement "iVar18 = param_2[6];" (assignment_expression "iVar18 = param_2[6]" (identifier "iVar18") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a4 = 0xb6d;" (assignment_expression "local_a4 = 0xb6d" (identifier "local_a4") (= "=") (number_literal "0xb6d")) (; ";")) (expression_statement "iVar28 = param_2[7];" (assignment_expression "iVar28 = param_2[7]" (identifier "iVar28") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "local_a0 = 0xb6d;" (assignment_expression "local_a0 = 0xb6d" (identifier "local_a0") (= "=") (number_literal "0xb6d")) (; ";")) (expression_statement "sVar37 = uVar17 * iVar28;" (assignment_expression "sVar37 = uVar17 * iVar28" (identifier "sVar37") (= "=") (binary_expression "uVar17 * iVar28" (identifier "uVar17") (* "*") (identifier "iVar28"))) (; ";")) (expression_statement "local_128 = local_c8 + sVar37;" (assignment_expression "local_128 = local_c8 + sVar37" (identifier "local_128") (= "=") (binary_expression "local_c8 + sVar37" (identifier "local_c8") (+ "+") (identifier "sVar37"))) (; ";")) (if_statement "if ((uint)param_2[0x77] < 2) {\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }\n      else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" (if "if") (parenthesized_expression "((uint)param_2[0x77] < 2)" (( "(") (binary_expression "(uint)param_2[0x77] < 2" (cast_expression "(uint)param_2[0x77]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0x77]" (identifier "param_2") ([ "[") (number_literal "0x77") (] "]"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);\n        local_a0 = local_e4;\n      }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50);" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)\n                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" (identifier "ROUND") (argument_list "(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50)" (( "(") (binary_expression "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /\n                               (float)_DAT_002b7d50" (parenthesized_expression "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" (( "(") (binary_expression "(float)*(double *)(param_2 + 0x7c) * DAT_0029f71c" (cast_expression "(float)*(double *)(param_2 + 0x7c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x7c)" (* "*") (cast_expression "(double *)(param_2 + 0x7c)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x7c)" (( "(") (binary_expression "param_2 + 0x7c" (identifier "param_2") (+ "+") (number_literal "0x7c")) () ")"))))) (* "*") (identifier "DAT_0029f71c")) () ")")) (/ "/") (cast_expression "(float)_DAT_002b7d50" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "_DAT_002b7d50"))) () ")")))))) (; ";")) (expression_statement "local_a4 = local_e4;" (assignment_expression "local_a4 = local_e4" (identifier "local_a4") (= "=") (identifier "local_e4")) (; ";")) (expression_statement "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50);" (assignment_expression "local_e4 = (uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)\n                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" (identifier "ROUND") (argument_list "((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50)" (( "(") (binary_expression "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /\n                               (float)_DAT_002b7d50" (parenthesized_expression "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" (( "(") (binary_expression "DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)" (identifier "DAT_0029f71c") (* "*") (cast_expression "(float)*(double *)(param_2 + 0x7e)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x7e)" (* "*") (cast_expression "(double *)(param_2 + 0x7e)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x7e)" (( "(") (binary_expression "param_2 + 0x7e" (identifier "param_2") (+ "+") (number_literal "0x7e")) () ")")))))) () ")")) (/ "/") (cast_expression "(float)_DAT_002b7d50" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "_DAT_002b7d50"))) () ")")))))) (; ";")) (expression_statement "local_a0 = local_e4;" (assignment_expression "local_a0 = local_e4" (identifier "local_a0") (= "=") (identifier "local_e4")) (; ";")) (} "}")) (else_clause "else if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" (else "else") (if_statement "if (param_2[0x77] == 2) {\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" (if "if") (parenthesized_expression "(param_2[0x77] == 2)" (( "(") (binary_expression "param_2[0x77] == 2" (subscript_expression "param_2[0x77]" (identifier "param_2") ([ "[") (number_literal "0x77") (] "]")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);\n        local_a4 = local_e4;\n        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));\n        local_a0 = local_e4;\n      }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" (identifier "ROUND") (argument_list "((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c)" (( "(") (binary_expression "(float)*(double *)(param_2 + 0x7c) * DAT_0029f71c" (cast_expression "(float)*(double *)(param_2 + 0x7c)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x7c)" (* "*") (cast_expression "(double *)(param_2 + 0x7c)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x7c)" (( "(") (binary_expression "param_2 + 0x7c" (identifier "param_2") (+ "+") (number_literal "0x7c")) () ")"))))) (* "*") (identifier "DAT_0029f71c")) () ")")))))) (; ";")) (expression_statement "local_a4 = local_e4;" (assignment_expression "local_a4 = local_e4" (identifier "local_a4") (= "=") (identifier "local_e4")) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" (identifier "ROUND") (argument_list "(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e))" (( "(") (binary_expression "DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)" (identifier "DAT_0029f71c") (* "*") (cast_expression "(float)*(double *)(param_2 + 0x7e)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x7e)" (* "*") (cast_expression "(double *)(param_2 + 0x7e)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x7e)" (( "(") (binary_expression "param_2 + 0x7e" (identifier "param_2") (+ "+") (number_literal "0x7e")) () ")")))))) () ")")))))) (; ";")) (expression_statement "local_a0 = local_e4;" (assignment_expression "local_a0 = local_e4" (identifier "local_a0") (= "=") (identifier "local_e4")) (; ";")) (} "}"))))) (expression_statement "uVar27 = iVar18 + 0x100U;" (assignment_expression "uVar27 = iVar18 + 0x100U" (identifier "uVar27") (= "=") (binary_expression "iVar18 + 0x100U" (identifier "iVar18") (+ "+") (number_literal "0x100U"))) (; ";")) (if_statement "if (iVar18 + 0x100U < uVar17) {\n        uVar27 = uVar17;\n      }" (if "if") (parenthesized_expression "(iVar18 + 0x100U < uVar17)" (( "(") (binary_expression "iVar18 + 0x100U < uVar17" (binary_expression "iVar18 + 0x100U" (identifier "iVar18") (+ "+") (number_literal "0x100U")) (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n        uVar27 = uVar17;\n      }" ({ "{") (expression_statement "uVar27 = uVar17;" (assignment_expression "uVar27 = uVar17" (identifier "uVar27") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (expression_statement "local_b8 = iVar18;" (assignment_expression "local_b8 = iVar18" (identifier "local_b8") (= "=") (identifier "iVar18")) (; ";")) (expression_statement "local_b4 = iVar28;" (assignment_expression "local_b4 = iVar28" (identifier "local_b4") (= "=") (identifier "iVar28")) (; ";")) (expression_statement "local_a8 = sVar37;" (assignment_expression "local_a8 = sVar37" (identifier "local_a8") (= "=") (identifier "sVar37")) (; ";")) (expression_statement "local_88 = local_144;" (assignment_expression "local_88 = local_144" (identifier "local_88") (= "=") (identifier "local_144")) (; ";")) (expression_statement "local_124 = AcquireVirtualMemory(iVar28,uVar27);" (assignment_expression "local_124 = AcquireVirtualMemory(iVar28,uVar27)" (identifier "local_124") (= "=") (call_expression "AcquireVirtualMemory(iVar28,uVar27)" (identifier "AcquireVirtualMemory") (argument_list "(iVar28,uVar27)" (( "(") (identifier "iVar28") (, ",") (identifier "uVar27") () ")")))) (; ";")) (expression_statement "piVar35 = param_2;" (assignment_expression "piVar35 = param_2" (identifier "piVar35") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (local_124 == 0) {\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }" (if "if") (parenthesized_expression "(local_124 == 0)" (( "(") (binary_expression "local_124 == 0" (identifier "local_124") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      }" ({ "{") (expression_statement "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);" (call_expression "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" (identifier "ThrowMagickException") (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" (( "(") (identifier "param_3") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x77b") (, ",") (number_literal "400") (, ",") (string_literal ""MemoryAllocationFailed"" (" """) (string_content "MemoryAllocationFailed") (" """)) (, ",") (string_literal ""`%s\'"" (" """) (string_content "`%s") (escape_sequence "\'") (" """)) (, ",") (binary_expression "param_2 + 0xc6" (identifier "param_2") (+ "+") (number_literal "0xc6")) () ")"))) (; ";")) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" (while "while") (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" (( "(") (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" (identifier "piVar8") (= "=") (identifier "param_2")) (, ",") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" ({ "{") (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar8[0xccf]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[0xccf]" (identifier "piVar8") ([ "[") (number_literal "0xccf") (] "]")))) (; ";")) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" (identifier "param_2") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" (identifier "piVar35") (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (goto_statement "goto LAB_001d3a2a;" (goto "goto") (statement_identifier "LAB_001d3a2a") (; ";")) (} "}"))) (expression_statement "local_168 = (char *)GetVirtualMemoryBlob(local_124);" (assignment_expression "local_168 = (char *)GetVirtualMemoryBlob(local_124)" (identifier "local_168") (= "=") (cast_expression "(char *)GetVirtualMemoryBlob(local_124)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetVirtualMemoryBlob(local_124)" (identifier "GetVirtualMemoryBlob") (argument_list "(local_124)" (( "(") (identifier "local_124") () ")"))))) (; ";")) (expression_statement "memset(local_168,0,sVar37);" (call_expression "memset(local_168,0,sVar37)" (identifier "memset") (argument_list "(local_168,0,sVar37)" (( "(") (identifier "local_168") (, ",") (number_literal "0") (, ",") (identifier "sVar37") () ")"))) (; ";")) (expression_statement "uVar7 = CONCAT11(uStack_17b,local_17c);" (assignment_expression "uVar7 = CONCAT11(uStack_17b,local_17c)" (identifier "uVar7") (= "=") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")")))) (; ";")) (switch_statement "switch(uVar7) {\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }" (switch "switch") (parenthesized_expression "(uVar7)" (( "(") (identifier "uVar7") () ")")) (compound_statement "{\n      default:\n        goto LAB_001d23a7;\n      case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;\n      case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;\n      case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;\n      case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }\n      }" ({ "{") (case_statement "default:\n        goto LAB_001d23a7;" (default "default") (: ":") (goto_statement "goto LAB_001d23a7;" (goto "goto") (statement_identifier "LAB_001d23a7") (; ";"))) (case_statement "case 1:\n        if (param_2[7] < 1) break;\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);\n        bVar42 = bVar11 != 2;\n        goto LAB_001d149a;" (case "case") (number_literal "1") (: ":") (if_statement "if (param_2[7] < 1) break;" (if "if") (parenthesized_expression "(param_2[7] < 1)" (( "(") (binary_expression "param_2[7] < 1" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" (identifier "local_14c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_148 = 0;" (assignment_expression "iStack_148 = 0" (identifier "iStack_148") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        } while ((int)uVar16 < iVar14);" (do "do") (compound_statement "{\n          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n          if (iVar14 == 0) break;\n          iVar19 = param_2[6];\n          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n          local_17c = (byte)iVar19;\n          uStack_17b = (undefined1)((uint)iVar19 >> 8);\n          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n          pcVar46 = local_164;\n          if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }\n          iVar14 = iVar19 + 0xe;\n          if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }\n          if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }\n          iVar14 = param_2[7];\n          if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }\n          uVar16 = uVar16 + 1;\n          bVar42 = 0xfffffffe < local_14c;\n          local_14c = local_14c + 1;\n          iStack_148 = iStack_148 + (uint)bVar42;\n        }" ({ "{") (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" (identifier "iVar14") (= "=") (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" (identifier "GetVirtualPixels") (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "uVar16") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17" (identifier "local_164") (= "=") (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" (identifier "local_168") (+ "+") (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" (( "(") (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" (~ "~") (identifier "uVar16")) (+ "+") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (* "*") (identifier "uVar17")))) (; ";")) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" (identifier "local_17c") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" (identifier "uStack_17a") (= "=") (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)iVar19 >> 0x10)" (( "(") (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" (identifier "pcVar46") (= "=") (identifier "local_164")) (; ";")) (if_statement "if (0 < iVar19) {\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }" (if "if") (parenthesized_expression "(0 < iVar19)" (( "(") (binary_expression "0 < iVar19" (number_literal "0") (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n            uVar27 = 0;\n            iVar39 = 0;\n            iVar22 = 0;\n            do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);\n            pcVar46 = local_164;\n            if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }\n          }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" (identifier "iVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" (identifier "iVar22") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            } while (iVar22 < iVar19);" (do "do") (compound_statement "{\n              uVar27 = uVar27 * 2;\n              if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }\n              iVar39 = iVar39 + 1;\n              if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }\n              iVar22 = iVar22 + 1;\n              iVar14 = iVar14 + param_2[0xa6] * 8;\n              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            }" ({ "{") (expression_statement "uVar27 = uVar27 * 2;" (assignment_expression "uVar27 = uVar27 * 2" (identifier "uVar27") (= "=") (binary_expression "uVar27 * 2" (identifier "uVar27") (* "*") (number_literal "2"))) (; ";")) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x40)" (( "(") (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);\n                uVar34 = (uint)NAN(dVar47);\n                if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }\n                uVar27 = uVar27 | uVar34;\n              }" ({ "{") (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x44)" (( "(") (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar34 = (uint)NAN(dVar47);" (assignment_expression "uVar34 = (uint)NAN(dVar47)" (identifier "uVar34") (= "=") (cast_expression "(uint)NAN(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "NAN(dVar47)" (identifier "NAN") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")"))))) (; ";")) (if_statement "if (dVar47 != 0.0) {\n                  uVar34 = 1;\n                }" (if "if") (parenthesized_expression "(dVar47 != 0.0)" (( "(") (binary_expression "dVar47 != 0.0" (identifier "dVar47") (!= "!=") (number_literal "0.0")) () ")")) (compound_statement "{\n                  uVar34 = 1;\n                }" ({ "{") (expression_statement "uVar34 = 1;" (assignment_expression "uVar34 = 1" (identifier "uVar34") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar27 = uVar27 | uVar34;" (assignment_expression "uVar27 = uVar27 | uVar34" (identifier "uVar27") (= "=") (binary_expression "uVar27 | uVar34" (identifier "uVar27") (| "|") (identifier "uVar34"))) (; ";")) (} "}"))) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" (identifier "iVar39") (= "=") (binary_expression "iVar39 + 1" (identifier "iVar39") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar39 == 8) {\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }" (if "if") (parenthesized_expression "(iVar39 == 8)" (( "(") (binary_expression "iVar39 == 8" (identifier "iVar39") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n                iVar39 = 0;\n                *local_164 = (char)uVar27;\n                local_164 = local_164 + 1;\n                uVar27 = 0;\n                iVar19 = param_2[6];\n                local_17c = (byte)iVar19;\n                uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n              }" ({ "{") (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" (identifier "iVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_164 = (char)uVar27;" (assignment_expression "*local_164 = (char)uVar27" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (cast_expression "(char)uVar27" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar27"))) (; ";")) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" (identifier "local_164") (= "=") (binary_expression "local_164 + 1" (identifier "local_164") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" (identifier "local_17c") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" (identifier "uStack_17a") (= "=") (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)iVar19 >> 0x10)" (( "(") (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (= "=") (binary_expression "iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (+ "+") (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" (identifier "param_2") ([ "[") (number_literal "0xa6") (] "]")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "iVar19") (= "=") (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 < iVar19)" (( "(") (binary_expression "iVar22 < iVar19" (identifier "iVar22") (< "<") (identifier "iVar19")) () ")")) (; ";")) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" (identifier "pcVar46") (= "=") (identifier "local_164")) (; ";")) (if_statement "if (iVar39 != 0) {\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }" (if "if") (parenthesized_expression "(iVar39 != 0)" (( "(") (binary_expression "iVar39 != 0" (identifier "iVar39") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              pcVar46 = local_164 + 1;\n              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));\n              iVar19 = param_2[6];\n            }" ({ "{") (expression_statement "pcVar46 = local_164 + 1;" (assignment_expression "pcVar46 = local_164 + 1" (identifier "pcVar46") (= "=") (binary_expression "local_164 + 1" (identifier "local_164") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));" (assignment_expression "*local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f))" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (cast_expression "(char)(uVar27 << (8U - (char)iVar39 & 0x1f))" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar27 << (8U - (char)iVar39 & 0x1f))" (( "(") (binary_expression "uVar27 << (8U - (char)iVar39 & 0x1f)" (identifier "uVar27") (<< "<<") (parenthesized_expression "(8U - (char)iVar39 & 0x1f)" (( "(") (binary_expression "8U - (char)iVar39 & 0x1f" (binary_expression "8U - (char)iVar39" (number_literal "8U") (- "-") (cast_expression "(char)iVar39" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar39"))) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar14 = iVar19 + 0xe;" (assignment_expression "iVar14 = iVar19 + 0xe" (identifier "iVar14") (= "=") (binary_expression "iVar19 + 0xe" (identifier "iVar19") (+ "+") (number_literal "0xe"))) (; ";")) (if_statement "if (-1 < iVar19 + 7) {\n            iVar14 = iVar19 + 7;\n          }" (if "if") (parenthesized_expression "(-1 < iVar19 + 7)" (( "(") (binary_expression "-1 < iVar19 + 7" (number_literal "-1") (< "<") (binary_expression "iVar19 + 7" (identifier "iVar19") (+ "+") (number_literal "7"))) () ")")) (compound_statement "{\n            iVar14 = iVar19 + 7;\n          }" ({ "{") (expression_statement "iVar14 = iVar19 + 7;" (assignment_expression "iVar14 = iVar19 + 7" (identifier "iVar14") (= "=") (binary_expression "iVar19 + 7" (identifier "iVar19") (+ "+") (number_literal "7"))) (; ";")) (} "}"))) (if_statement "if (iVar14 >> 3 < (int)uVar17) {\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }" (if "if") (parenthesized_expression "(iVar14 >> 3 < (int)uVar17)" (( "(") (binary_expression "iVar14 >> 3 < (int)uVar17" (binary_expression "iVar14 >> 3" (identifier "iVar14") (>> ">>") (number_literal "3")) (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n            pcVar38 = pcVar46;\n            do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));\n          }" ({ "{") (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" (identifier "pcVar38") (= "=") (identifier "pcVar46")) (; ";")) (do_statement "do {\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));" (do "do") (compound_statement "{\n              pcVar30 = pcVar38 + 1;\n              *pcVar38 = '\0';\n              pcVar38 = pcVar30;\n            }" ({ "{") (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" (identifier "pcVar30") (= "=") (binary_expression "pcVar38 + 1" (identifier "pcVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" (identifier "pcVar38") (= "=") (identifier "pcVar30")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)))" (( "(") (binary_expression "pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3))" (identifier "pcVar30") (!= "!=") (binary_expression "pcVar46 + (uVar17 - (iVar14 >> 3))" (identifier "pcVar46") (+ "+") (parenthesized_expression "(uVar17 - (iVar14 >> 3))" (( "(") (binary_expression "uVar17 - (iVar14 >> 3)" (identifier "uVar17") (- "-") (parenthesized_expression "(iVar14 >> 3)" (( "(") (binary_expression "iVar14 >> 3" (identifier "iVar14") (>> ">>") (number_literal "3")) () ")"))) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (param_2[0xccf] == 0) {\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }" (if "if") (parenthesized_expression "(param_2[0xccf] == 0)" (( "(") (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" (identifier "param_2") ([ "[") (number_literal "0xccf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n            if (iVar14 == 0) break;\n            iVar14 = param_2[7];\n          }" ({ "{") (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" (identifier "iVar14") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (identifier "local_14c") (, ",") (identifier "iStack_148") (, ",") (identifier "iVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar42 = 0xfffffffe < local_14c;" (assignment_expression "bVar42 = 0xfffffffe < local_14c" (identifier "bVar42") (= "=") (binary_expression "0xfffffffe < local_14c" (number_literal "0xfffffffe") (< "<") (identifier "local_14c"))) (; ";")) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" (identifier "local_14c") (= "=") (binary_expression "local_14c + 1" (identifier "local_14c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iStack_148 = iStack_148 + (uint)bVar42;" (assignment_expression "iStack_148 = iStack_148 + (uint)bVar42" (identifier "iStack_148") (= "=") (binary_expression "iStack_148 + (uint)bVar42" (identifier "iStack_148") (+ "+") (cast_expression "(uint)bVar42" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar42")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar16 < iVar14)" (( "(") (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (< "<") (identifier "iVar14")) () ")")) (; ";")) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" (identifier "bVar42") (= "=") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_001d149a;" (goto "goto") (statement_identifier "LAB_001d149a") (; ";"))) (case_statement "case 4:\n        local_14c = 0;\n        iStack_148 = 0;\n        uVar16 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" (case "case") (number_literal "4") (: ":") (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" (identifier "local_14c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_148 = 0;" (assignment_expression "iStack_148 = 0" (identifier "iStack_148") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" (if "if") (parenthesized_expression "(0 < param_2[7])" (( "(") (binary_expression "0 < param_2[7]" (number_literal "0") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" ({ "{") (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);" (do "do") (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            local_17c = (byte)iVar19;\n            uStack_17b = (undefined1)((uint)iVar19 >> 8);\n            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n            pcVar46 = local_164;\n            if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }\n            iVar14 = (iVar19 + 1) / 2;\n            if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < local_14c;\n            local_14c = local_14c + 1;\n            iStack_148 = iStack_148 + (uint)bVar42;\n          }" ({ "{") (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" (identifier "iVar14") (= "=") (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" (identifier "GetVirtualPixels") (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "uVar16") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d1490;" (goto "goto") (statement_identifier "LAB_001d1490") (; ";"))) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17" (identifier "local_164") (= "=") (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" (identifier "local_168") (+ "+") (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" (( "(") (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" (~ "~") (identifier "uVar16")) (+ "+") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (* "*") (identifier "uVar17")))) (; ";")) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" (identifier "local_17c") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" (identifier "uStack_17a") (= "=") (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)iVar19 >> 0x10)" (( "(") (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" (identifier "pcVar46") (= "=") (identifier "local_164")) (; ";")) (if_statement "if (0 < iVar19) {\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }" (if "if") (parenthesized_expression "(0 < iVar19)" (( "(") (binary_expression "0 < iVar19" (number_literal "0") (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n              bVar42 = false;\n              iVar39 = 0;\n              uVar27 = 0;\n              do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);\n              pcVar46 = local_164;\n              if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }\n            }" ({ "{") (expression_statement "bVar42 = false;" (assignment_expression "bVar42 = false" (identifier "bVar42") (= "=") (false "false")) (; ";")) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" (identifier "iVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              } while (iVar39 < iVar19);" (do "do") (compound_statement "{\n                uVar27 = uVar27 << 4;\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }\n                bVar42 = !bVar42;\n                if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n              }" ({ "{") (expression_statement "uVar27 = uVar27 << 4;" (assignment_expression "uVar27 = uVar27 << 4" (identifier "uVar27") (= "=") (binary_expression "uVar27 << 4" (identifier "uVar27") (<< "<<") (number_literal "4"))) (; ";")) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x40)" (( "(") (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                  uVar27 = uVar27 | local_e4 & 0xf;\n                }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));" (assignment_expression "local_e4 = (uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)\n                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (identifier "ROUND") (argument_list "(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (( "(") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x44)" (( "(") (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "8"))) () ")")))) () ")")))))) (; ";")) (expression_statement "uVar27 = uVar27 | local_e4 & 0xf;" (assignment_expression "uVar27 = uVar27 | local_e4 & 0xf" (identifier "uVar27") (= "=") (binary_expression "uVar27 | local_e4 & 0xf" (identifier "uVar27") (| "|") (binary_expression "local_e4 & 0xf" (identifier "local_e4") (& "&") (number_literal "0xf")))) (; ";")) (} "}"))) (expression_statement "bVar42 = !bVar42;" (assignment_expression "bVar42 = !bVar42" (identifier "bVar42") (= "=") (unary_expression "!bVar42" (! "!") (identifier "bVar42"))) (; ";")) (if_statement "if (!bVar42) {\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }" (if "if") (parenthesized_expression "(!bVar42)" (( "(") (unary_expression "!bVar42" (! "!") (identifier "bVar42")) () ")")) (compound_statement "{\n                  *local_164 = (char)uVar27;\n                  local_164 = local_164 + 1;\n                  uVar27 = 0;\n                  iVar19 = param_2[6];\n                  local_17c = (byte)iVar19;\n                  uStack_17b = (undefined1)((uint)iVar19 >> 8);\n                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);\n                }" ({ "{") (expression_statement "*local_164 = (char)uVar27;" (assignment_expression "*local_164 = (char)uVar27" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (cast_expression "(char)uVar27" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar27"))) (; ";")) (expression_statement "local_164 = local_164 + 1;" (assignment_expression "local_164 = local_164 + 1" (identifier "local_164") (= "=") (binary_expression "local_164 + 1" (identifier "local_164") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_17c = (byte)iVar19;" (assignment_expression "local_17c = (byte)iVar19" (identifier "local_17c") (= "=") (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19"))) (; ";")) (expression_statement "uStack_17b = (undefined1)((uint)iVar19 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar19 >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)((uint)iVar19 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)iVar19 >> 8)" (( "(") (binary_expression "(uint)iVar19 >> 8" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_17a = (undefined2)((uint)iVar19 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar19 >> 0x10)" (identifier "uStack_17a") (= "=") (call_expression "(undefined2)((uint)iVar19 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)iVar19 >> 0x10)" (( "(") (binary_expression "(uint)iVar19 >> 0x10" (cast_expression "(uint)iVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar19")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" (identifier "iVar39") (= "=") (binary_expression "iVar39 + 1" (identifier "iVar39") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (= "=") (binary_expression "iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (+ "+") (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" (identifier "param_2") ([ "[") (number_literal "0xa6") (] "]")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "iVar19") (= "=") (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar39 < iVar19)" (( "(") (binary_expression "iVar39 < iVar19" (identifier "iVar39") (< "<") (identifier "iVar19")) () ")")) (; ";")) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" (identifier "pcVar46") (= "=") (identifier "local_164")) (; ";")) (if_statement "if (bVar42) {\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }" (if "if") (parenthesized_expression "(bVar42)" (( "(") (identifier "bVar42") () ")")) (compound_statement "{\n                pcVar46 = local_164 + 1;\n                *local_164 = (char)(uVar27 << 4);\n                iVar19 = param_2[6];\n              }" ({ "{") (expression_statement "pcVar46 = local_164 + 1;" (assignment_expression "pcVar46 = local_164 + 1" (identifier "pcVar46") (= "=") (binary_expression "local_164 + 1" (identifier "local_164") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*local_164 = (char)(uVar27 << 4);" (assignment_expression "*local_164 = (char)(uVar27 << 4)" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (cast_expression "(char)(uVar27 << 4)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar27 << 4)" (( "(") (binary_expression "uVar27 << 4" (identifier "uVar27") (<< "<<") (number_literal "4")) () ")")))) (; ";")) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar14 = (iVar19 + 1) / 2;" (assignment_expression "iVar14 = (iVar19 + 1) / 2" (identifier "iVar14") (= "=") (binary_expression "(iVar19 + 1) / 2" (parenthesized_expression "(iVar19 + 1)" (( "(") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2"))) (; ";")) (if_statement "if (iVar14 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }" (if "if") (parenthesized_expression "(iVar14 < (int)uVar17)" (( "(") (binary_expression "iVar14 < (int)uVar17" (identifier "iVar14") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));\n            }" ({ "{") (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" (identifier "pcVar38") (= "=") (identifier "pcVar46")) (; ";")) (do_statement "do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));" (do "do") (compound_statement "{\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              }" ({ "{") (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" (identifier "pcVar30") (= "=") (binary_expression "pcVar38 + 1" (identifier "pcVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" (identifier "pcVar38") (= "=") (identifier "pcVar30")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar30 != pcVar46 + (uVar17 - iVar14))" (( "(") (binary_expression "pcVar30 != pcVar46 + (uVar17 - iVar14)" (identifier "pcVar30") (!= "!=") (binary_expression "pcVar46 + (uVar17 - iVar14)" (identifier "pcVar46") (+ "+") (parenthesized_expression "(uVar17 - iVar14)" (( "(") (binary_expression "uVar17 - iVar14" (identifier "uVar17") (- "-") (identifier "iVar14")) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" (if "if") (parenthesized_expression "(param_2[0xccf] == 0)" (( "(") (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" (identifier "param_2") ([ "[") (number_literal "0xccf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" ({ "{") (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" (identifier "iVar14") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",local_14c,iStack_148,iVar14,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (identifier "local_14c") (, ",") (identifier "iStack_148") (, ",") (identifier "iVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d1490;" (goto "goto") (statement_identifier "LAB_001d1490") (; ";"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar42 = 0xfffffffe < local_14c;" (assignment_expression "bVar42 = 0xfffffffe < local_14c" (identifier "bVar42") (= "=") (binary_expression "0xfffffffe < local_14c" (number_literal "0xfffffffe") (< "<") (identifier "local_14c"))) (; ";")) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" (identifier "local_14c") (= "=") (binary_expression "local_14c + 1" (identifier "local_14c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iStack_148 = iStack_148 + (uint)bVar42;" (assignment_expression "iStack_148 = iStack_148 + (uint)bVar42" (identifier "iStack_148") (= "=") (binary_expression "iStack_148 + (uint)bVar42" (identifier "iStack_148") (+ "+") (cast_expression "(uint)bVar42" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar42")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar16 < iVar14)" (( "(") (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (< "<") (identifier "iVar14")) () ")")) (; ";")) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" (identifier "bVar42") (= "=") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_001d149a;" (goto "goto") (statement_identifier "LAB_001d149a") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 8:\n        local_164 = (char *)0x0;\n        local_160 = 0;\n        uVar27 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }\nLAB_001d23a7:\n        bVar42 = bVar11 != 2;\n        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;\n        bVar29 = bVar43 && bVar42;\n        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;\n        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);\n        if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }\n        RelinquishVirtualMemory(local_124);\n        ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);\n        piVar5 = (int *)param_1[3];\n        while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }\n        goto LAB_001d3a2a;" (case "case") (number_literal "8") (: ":") (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" (identifier "local_164") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" (identifier "local_160") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }" (if "if") (parenthesized_expression "(0 < param_2[7])" (( "(") (binary_expression "0 < param_2[7]" (number_literal "0") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);\n        }" ({ "{") (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          } while ((int)uVar27 < iVar14);" (do "do") (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;\n            pcVar46 = pcVar38;\n            if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }\n            if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }\n            uVar27 = uVar27 + 1;\n            bVar42 = 0xfffffffe < local_164;\n            local_164 = (char *)((int)local_164 + 1);\n            local_160 = local_160 + (uint)bVar42;\n          }" ({ "{") (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3)" (identifier "iVar14") (= "=") (call_expression "GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3)" (identifier "GetVirtualPixels") (argument_list "(param_2,0,uVar27,param_2[6],1,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "uVar27") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;" (assignment_expression "pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17" (identifier "pcVar38") (= "=") (binary_expression "local_168 + (~uVar27 + param_2[7]) * uVar17" (identifier "local_168") (+ "+") (binary_expression "(~uVar27 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar27 + param_2[7])" (( "(") (binary_expression "~uVar27 + param_2[7]" (unary_expression "~uVar27" (~ "~") (identifier "uVar27")) (+ "+") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (* "*") (identifier "uVar17")))) (; ";")) (expression_statement "pcVar46 = pcVar38;" (assignment_expression "pcVar46 = pcVar38" (identifier "pcVar46") (= "=") (identifier "pcVar38")) (; ";")) (if_statement "if (param_2[6] < 1) {\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }\n            else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" (if "if") (parenthesized_expression "(param_2[6] < 1)" (( "(") (binary_expression "param_2[6] < 1" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              iVar19 = 0;\n              pcVar30 = pcVar38;\n            }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar30 = pcVar38;" (assignment_expression "pcVar30 = pcVar38" (identifier "pcVar30") (= "=") (identifier "pcVar38")) (; ";")) (} "}")) (else_clause "else {\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" (else "else") (compound_statement "{\n              do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);\n            }" ({ "{") (do_statement "do {\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              } while (iVar19 < param_2[6]);" (do "do") (compound_statement "{\n                cVar24 = '\0';\n                if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }\n                pcVar30 = pcVar46 + 1;\n                *pcVar46 = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = (int)pcVar30 - (int)pcVar38;\n                pcVar46 = pcVar30;\n              }" ({ "{") (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (*(int *)(param_2[0xaa] + 0x40) != 0) {\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x40) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xaa] + 0x40) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x40)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x40)" (( "(") (binary_expression "param_2[0xaa] + 0x40" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));\n                }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));" (assignment_expression "cVar24 = (char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (identifier "ROUND") (argument_list "(*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8))" (( "(") (pointer_expression "*(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (* "*") (cast_expression "(double *)\n                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x44) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x44)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x44)" (( "(") (binary_expression "param_2[0xaa] + 0x44" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x44")) () ")")))) (* "*") (number_literal "8"))) () ")")))) () ")")))))) (; ";")) (} "}"))) (expression_statement "pcVar30 = pcVar46 + 1;" (assignment_expression "pcVar30 = pcVar46 + 1" (identifier "pcVar30") (= "=") (binary_expression "pcVar46 + 1" (identifier "pcVar46") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar46 = cVar24;" (assignment_expression "*pcVar46 = cVar24" (pointer_expression "*pcVar46" (* "*") (identifier "pcVar46")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (= "=") (binary_expression "iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (+ "+") (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" (identifier "param_2") ([ "[") (number_literal "0xa6") (] "]")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar19 = (int)pcVar30 - (int)pcVar38;" (assignment_expression "iVar19 = (int)pcVar30 - (int)pcVar38" (identifier "iVar19") (= "=") (binary_expression "(int)pcVar30 - (int)pcVar38" (cast_expression "(int)pcVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar30")) (- "-") (cast_expression "(int)pcVar38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar38")))) (; ";")) (expression_statement "pcVar46 = pcVar30;" (assignment_expression "pcVar46 = pcVar30" (identifier "pcVar46") (= "=") (identifier "pcVar30")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 < param_2[6])" (( "(") (binary_expression "iVar19 < param_2[6]" (identifier "iVar19") (< "<") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) () ")")) (; ";")) (} "}")))) (if_statement "if (iVar19 < (int)uVar17) {\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }" (if "if") (parenthesized_expression "(iVar19 < (int)uVar17)" (( "(") (binary_expression "iVar19 < (int)uVar17" (identifier "iVar19") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n              pcVar46 = pcVar30;\n              do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));\n            }" ({ "{") (expression_statement "pcVar46 = pcVar30;" (assignment_expression "pcVar46 = pcVar30" (identifier "pcVar46") (= "=") (identifier "pcVar30")) (; ";")) (do_statement "do {\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));" (do "do") (compound_statement "{\n                pcVar38 = pcVar46 + 1;\n                *pcVar46 = '\0';\n                pcVar46 = pcVar38;\n              }" ({ "{") (expression_statement "pcVar38 = pcVar46 + 1;" (assignment_expression "pcVar38 = pcVar46 + 1" (identifier "pcVar38") (= "=") (binary_expression "pcVar46 + 1" (identifier "pcVar46") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar46 = '\0';" (assignment_expression "*pcVar46 = '\0'" (pointer_expression "*pcVar46" (* "*") (identifier "pcVar46")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar46 = pcVar38;" (assignment_expression "pcVar46 = pcVar38" (identifier "pcVar46") (= "=") (identifier "pcVar38")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar38 != pcVar30 + (uVar17 - iVar19))" (( "(") (binary_expression "pcVar38 != pcVar30 + (uVar17 - iVar19)" (identifier "pcVar38") (!= "!=") (binary_expression "pcVar30 + (uVar17 - iVar19)" (identifier "pcVar30") (+ "+") (parenthesized_expression "(uVar17 - iVar19)" (( "(") (binary_expression "uVar17 - iVar19" (identifier "uVar17") (- "-") (identifier "iVar19")) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }" (if "if") (parenthesized_expression "(param_2[0xccf] == 0)" (( "(") (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" (identifier "param_2") ([ "[") (number_literal "0xccf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);\n              if (iVar14 == 0) break;\n              iVar14 = param_2[7];\n            }" ({ "{") (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0)" (identifier "iVar14") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",local_164,local_160,iVar14,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (identifier "local_164") (, ",") (identifier "local_160") (, ",") (identifier "iVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar42 = 0xfffffffe < local_164;" (assignment_expression "bVar42 = 0xfffffffe < local_164" (identifier "bVar42") (= "=") (binary_expression "0xfffffffe < local_164" (number_literal "0xfffffffe") (< "<") (identifier "local_164"))) (; ";")) (expression_statement "local_164 = (char *)((int)local_164 + 1);" (assignment_expression "local_164 = (char *)((int)local_164 + 1)" (identifier "local_164") (= "=") (cast_expression "(char *)((int)local_164 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 1)" (( "(") (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_160 = local_160 + (uint)bVar42;" (assignment_expression "local_160 = local_160 + (uint)bVar42" (identifier "local_160") (= "=") (binary_expression "local_160 + (uint)bVar42" (identifier "local_160") (+ "+") (cast_expression "(uint)bVar42" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar42")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar27 < iVar14)" (( "(") (binary_expression "(int)uVar27 < iVar14" (cast_expression "(int)uVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar27")) (< "<") (identifier "iVar14")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001d23a7:\n        bVar42 = bVar11 != 2;" (statement_identifier "LAB_001d23a7") (: ":") (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" (identifier "bVar42") (= "=") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2"))) (; ";"))) (expression_statement "bVar43 = CONCAT11(uStack_17b,local_17c) == 8;" (assignment_expression "bVar43 = CONCAT11(uStack_17b,local_17c) == 8" (identifier "bVar43") (= "=") (binary_expression "CONCAT11(uStack_17b,local_17c) == 8" (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) (== "==") (number_literal "8"))) (; ";")) (expression_statement "bVar29 = bVar43 && bVar42;" (assignment_expression "bVar29 = bVar43 && bVar42" (identifier "bVar29") (= "=") (binary_expression "bVar43 && bVar42" (identifier "bVar43") (&& "&&") (identifier "bVar42"))) (; ";")) (if_statement "if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;" (if "if") (parenthesized_expression "((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10))" (( "(") (binary_expression "(!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)" (parenthesized_expression "(!bVar43 || !bVar42)" (( "(") (binary_expression "!bVar43 || !bVar42" (unary_expression "!bVar43" (! "!") (identifier "bVar43")) (|| "||") (unary_expression "!bVar42" (! "!") (identifier "bVar42"))) () ")")) (|| "||") (parenthesized_expression "(bVar42 = bVar29, *param_1 == 0x10)" (( "(") (comma_expression "bVar42 = bVar29, *param_1 == 0x10" (assignment_expression "bVar42 = bVar29" (identifier "bVar42") (= "=") (identifier "bVar29")) (, ",") (binary_expression "*param_1 == 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0x10"))) () ")"))) () ")")) (goto_statement "goto LAB_001d149a;" (goto "goto") (statement_identifier "LAB_001d149a") (; ";"))) (expression_statement "iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);" (assignment_expression "iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2)" (identifier "iVar14") (= "=") (call_expression "AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2)" (identifier "AcquireVirtualMemory") (argument_list "(uVar16 * 8 + 6,param_2[7] + 2)" (( "(") (binary_expression "uVar16 * 8 + 6" (binary_expression "uVar16 * 8" (identifier "uVar16") (* "*") (number_literal "8")) (+ "+") (number_literal "6")) (, ",") (binary_expression "param_2[7] + 2" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (iVar14 != 0) {\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);\n          if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }\n          if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }\n          if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }\n          local_164 = (char *)puVar21;\n          if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }\n          local_164[0] = '\0';\n          local_164[1] = '\x01';\n          local_a8 = (int)local_164 + (2 - (int)puVar21);\n          local_128 = local_a8 + local_c8;\n          RelinquishVirtualMemory(local_124);\n          local_ac = 1;\n          local_124 = iVar14;\n          if (param_2[0xcca] == 0) goto LAB_001d14a8;\n          goto LAB_001d2640;\n        }" ({ "{") (expression_statement "puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);" (assignment_expression "puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14)" (identifier "puVar21") (= "=") (cast_expression "(undefined2 *)GetVirtualMemoryBlob(iVar14)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "GetVirtualMemoryBlob(iVar14)" (identifier "GetVirtualMemoryBlob") (argument_list "(iVar14)" (( "(") (identifier "iVar14") () ")"))))) (; ";")) (if_statement "if (param_2[0xcd1] != -0x54535255) {\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" (if "if") (parenthesized_expression "(param_2[0xcd1] != -0x54535255)" (( "(") (binary_expression "param_2[0xcd1] != -0x54535255" (subscript_expression "param_2[0xcd1]" (identifier "param_2") ([ "[") (number_literal "0xcd1") (] "]")) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n                    \n            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");\n          }" ({ "{") (expression_statement "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage");" (call_expression "__assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" (identifier "__assert_fail") (argument_list "("image->signature == MagickCoreSignature","coders/bmp.c",0x193,\n                          "EncodeImage")" (( "(") (string_literal ""image->signature == MagickCoreSignature"" (" """) (string_content "image->signature == MagickCoreSignature") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x193") (, ",") (string_literal ""EncodeImage"" (" """) (string_content "EncodeImage") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2[0xcca] != 0) {\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }" (if "if") (parenthesized_expression "(param_2[0xcca] != 0)" (( "(") (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);\n          }" ({ "{") (expression_statement "LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);" (call_expression "LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6)" (identifier "LogMagickEvent") (argument_list "(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6)" (( "(") (number_literal "0x8000") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""EncodeImage"" (" """) (string_content "EncodeImage") (" """)) (, ",") (number_literal "0x195") (, ",") (pointer_expression "&DAT_002b6e4e" (& "&") (identifier "DAT_002b6e4e")) (, ",") (binary_expression "param_2 + 0xc6" (identifier "param_2") (+ "+") (number_literal "0xc6")) () ")"))) (; ";")) (} "}"))) (if_statement "if (puVar21 == (undefined2 *)0x0) {\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" (if "if") (parenthesized_expression "(puVar21 == (undefined2 *)0x0)" (( "(") (binary_expression "puVar21 == (undefined2 *)0x0" (identifier "puVar21") (== "==") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");\n          }" ({ "{") (expression_statement "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage");" (call_expression "__assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" (identifier "__assert_fail") (argument_list "("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,\n                          "EncodeImage")" (( "(") (string_literal ""compressed_pixels != (unsigned char *) NULL"" (" """) (string_content "compressed_pixels != (unsigned char *) NULL") (" """)) (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (number_literal "0x197") (, ",") (string_literal ""EncodeImage"" (" """) (string_content "EncodeImage") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "local_164 = (char *)puVar21;" (assignment_expression "local_164 = (char *)puVar21" (identifier "local_164") (= "=") (cast_expression "(char *)puVar21" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar21"))) (; ";")) (if_statement "if (0 < param_2[7]) {\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }" (if "if") (parenthesized_expression "(0 < param_2[7])" (( "(") (binary_expression "0 < param_2[7]" (number_literal "0") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n            local_134 = 0;\n            iStack_130 = 0;\n            iVar19 = 0;\n            do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);\n          }" ({ "{") (expression_statement "local_134 = 0;" (assignment_expression "local_134 = 0" (identifier "local_134") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_130 = 0;" (assignment_expression "iStack_130 = 0" (identifier "iStack_130") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            } while (iVar19 < param_2[7]);" (do "do") (compound_statement "{\n              iVar39 = 0;\n              pcVar46 = local_164;\n              if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }\nLAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);\n              *(undefined2 *)pcVar46 = 0;\n              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);\n              if (iVar39 == 0) break;\n              iVar19 = iVar19 + 1;\n              bVar42 = 0xfffffffe < local_134;\n              local_134 = local_134 + 1;\n              iStack_130 = iStack_130 + (uint)bVar42;\n            }" ({ "{") (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" (identifier "iVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar46 = local_164;" (assignment_expression "pcVar46 = local_164" (identifier "pcVar46") (= "=") (identifier "local_164")) (; ";")) (if_statement "if (uVar16 != 0) {\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar22 = 1;\n                if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }\n                *local_164 = 1;\n                pcVar46 = (char *)((int)local_164 + 2);\n                *(char *)((int)local_164 + 1) = *local_168;\n                local_168 = local_168 + 1;\n              }" ({ "{") (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 1" (identifier "iVar22") (= "=") (number_literal "1")) (; ";")) (if_statement "if (1 < uVar17) {\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }" (if "if") (parenthesized_expression "(1 < uVar17)" (( "(") (binary_expression "1 < uVar17" (number_literal "1") (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n                  do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);\n                }" ({ "{") (do_statement "do {\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  } while (iVar22 < (int)uVar17);" (do "do") (compound_statement "{\n                    if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }\n                    local_164 = (char *)((int)local_164 + 2);\n                    iVar22 = iVar39 + 1;\n                    local_168 = pcVar38;\n                  }" ({ "{") (if_statement "if (*local_168 == local_168[1]) {\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }\n                    else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" (if "if") (parenthesized_expression "(*local_168 == local_168[1])" (( "(") (binary_expression "*local_168 == local_168[1]" (pointer_expression "*local_168" (* "*") (identifier "local_168")) (== "==") (subscript_expression "local_168[1]" (identifier "local_168") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n                      iVar22 = 1;\n                      pcVar46 = local_168 + 2;\n                      do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);\n                      *local_164 = (char)iVar22;\n                      pcVar46 = (char *)((int)local_164 + 2);\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar40;\n                      local_168 = pcVar38;\n                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;\n                    }" ({ "{") (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 1" (identifier "iVar22") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar46 = local_168 + 2;" (assignment_expression "pcVar46 = local_168 + 2" (identifier "pcVar46") (= "=") (binary_expression "local_168 + 2" (identifier "local_168") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      } while (*pcVar38 == *local_168);" (do "do") (compound_statement "{\n                        pcVar38 = pcVar46;\n                        iVar22 = iVar22 + 1;\n                        iVar40 = iVar39 + iVar22;\n                        if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }\n                        if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }\n                        pcVar46 = pcVar38 + 1;\n                      }" ({ "{") (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" (identifier "pcVar38") (= "=") (identifier "pcVar46")) (; ";")) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar40 = iVar39 + iVar22;" (assignment_expression "iVar40 = iVar39 + iVar22" (identifier "iVar40") (= "=") (binary_expression "iVar39 + iVar22" (identifier "iVar39") (+ "+") (identifier "iVar22"))) (; ";")) (if_statement "if (iVar22 == uVar17 - iVar39) {\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }" (if "if") (parenthesized_expression "(iVar22 == uVar17 - iVar39)" (( "(") (binary_expression "iVar22 == uVar17 - iVar39" (identifier "iVar22") (== "==") (binary_expression "uVar17 - iVar39" (identifier "uVar17") (- "-") (identifier "iVar39"))) () ")")) (compound_statement "{\n                          pcVar38 = local_168 + iVar22;\n                          break;\n                        }" ({ "{") (expression_statement "pcVar38 = local_168 + iVar22;" (assignment_expression "pcVar38 = local_168 + iVar22" (identifier "pcVar38") (= "=") (binary_expression "local_168 + iVar22" (identifier "local_168") (+ "+") (identifier "iVar22"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (iVar22 == 0xff) {\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }" (if "if") (parenthesized_expression "(iVar22 == 0xff)" (( "(") (binary_expression "iVar22 == 0xff" (identifier "iVar22") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n                          iVar22 = -1;\n                          pcVar38 = local_168 + 0xff;\n                          break;\n                        }" ({ "{") (expression_statement "iVar22 = -1;" (assignment_expression "iVar22 = -1" (identifier "iVar22") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar38 = local_168 + 0xff;" (assignment_expression "pcVar38 = local_168 + 0xff" (identifier "pcVar38") (= "=") (binary_expression "local_168 + 0xff" (identifier "local_168") (+ "+") (number_literal "0xff"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "pcVar46 = pcVar38 + 1;" (assignment_expression "pcVar46 = pcVar38 + 1" (identifier "pcVar46") (= "=") (binary_expression "pcVar38 + 1" (identifier "pcVar38") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcVar38 == *local_168)" (( "(") (binary_expression "*pcVar38 == *local_168" (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) (== "==") (pointer_expression "*local_168" (* "*") (identifier "local_168"))) () ")")) (; ";")) (expression_statement "*local_164 = (char)iVar22;" (assignment_expression "*local_164 = (char)iVar22" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (cast_expression "(char)iVar22" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar22"))) (; ";")) (expression_statement "pcVar46 = (char *)((int)local_164 + 2);" (assignment_expression "pcVar46 = (char *)((int)local_164 + 2)" (identifier "pcVar46") (= "=") (cast_expression "(char *)((int)local_164 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 2)" (( "(") (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" (* "*") (cast_expression "(char *)((int)local_164 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 1)" (( "(") (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*local_168" (* "*") (identifier "local_168"))) (; ";")) (expression_statement "iVar39 = iVar40;" (assignment_expression "iVar39 = iVar40" (identifier "iVar39") (= "=") (identifier "iVar40")) (; ";")) (expression_statement "local_168 = pcVar38;" (assignment_expression "local_168 = pcVar38" (identifier "local_168") (= "=") (identifier "pcVar38")) (; ";")) (if_statement "if ((int)uVar17 <= iVar40) goto LAB_001d2581;" (if "if") (parenthesized_expression "((int)uVar17 <= iVar40)" (( "(") (binary_expression "(int)uVar17 <= iVar40" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (<= "<=") (identifier "iVar40")) () ")")) (goto_statement "goto LAB_001d2581;" (goto "goto") (statement_identifier "LAB_001d2581") (; ";"))) (} "}")) (else_clause "else {\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" (else "else") (compound_statement "{\n                      pcVar38 = local_168 + 1;\n                      *local_164 = 1;\n                      *(char *)((int)local_164 + 1) = *local_168;\n                      iVar39 = iVar22;\n                    }" ({ "{") (expression_statement "pcVar38 = local_168 + 1;" (assignment_expression "pcVar38 = local_168 + 1" (identifier "pcVar38") (= "=") (binary_expression "local_168 + 1" (identifier "local_168") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*local_164 = 1;" (assignment_expression "*local_164 = 1" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" (* "*") (cast_expression "(char *)((int)local_164 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 1)" (( "(") (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*local_168" (* "*") (identifier "local_168"))) (; ";")) (expression_statement "iVar39 = iVar22;" (assignment_expression "iVar39 = iVar22" (identifier "iVar39") (= "=") (identifier "iVar22")) (; ";")) (} "}")))) (expression_statement "local_164 = (char *)((int)local_164 + 2);" (assignment_expression "local_164 = (char *)((int)local_164 + 2)" (identifier "local_164") (= "=") (cast_expression "(char *)((int)local_164 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 2)" (( "(") (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "iVar22 = iVar39 + 1;" (assignment_expression "iVar22 = iVar39 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar39 + 1" (identifier "iVar39") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_168 = pcVar38;" (assignment_expression "local_168 = pcVar38" (identifier "local_168") (= "=") (identifier "pcVar38")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 < (int)uVar17)" (( "(") (binary_expression "iVar22 < (int)uVar17" (identifier "iVar22") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (; ";")) (} "}"))) (expression_statement "*local_164 = 1;" (assignment_expression "*local_164 = 1" (pointer_expression "*local_164" (* "*") (identifier "local_164")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar46 = (char *)((int)local_164 + 2);" (assignment_expression "pcVar46 = (char *)((int)local_164 + 2)" (identifier "pcVar46") (= "=") (cast_expression "(char *)((int)local_164 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 2)" (( "(") (binary_expression "(int)local_164 + 2" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "*(char *)((int)local_164 + 1) = *local_168;" (assignment_expression "*(char *)((int)local_164 + 1) = *local_168" (pointer_expression "*(char *)((int)local_164 + 1)" (* "*") (cast_expression "(char *)((int)local_164 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_164 + 1)" (( "(") (binary_expression "(int)local_164 + 1" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*local_168" (* "*") (identifier "local_168"))) (; ";")) (expression_statement "local_168 = local_168 + 1;" (assignment_expression "local_168 = local_168 + 1" (identifier "local_168") (= "=") (binary_expression "local_168 + 1" (identifier "local_168") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (labeled_statement "LAB_001d2581:\n              local_164 = (char *)((int)pcVar46 + 2);" (statement_identifier "LAB_001d2581") (: ":") (expression_statement "local_164 = (char *)((int)pcVar46 + 2);" (assignment_expression "local_164 = (char *)((int)pcVar46 + 2)" (identifier "local_164") (= "=") (cast_expression "(char *)((int)pcVar46 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pcVar46 + 2)" (( "(") (binary_expression "(int)pcVar46 + 2" (cast_expression "(int)pcVar46" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar46")) (+ "+") (number_literal "2")) () ")")))) (; ";"))) (expression_statement "*(undefined2 *)pcVar46 = 0;" (assignment_expression "*(undefined2 *)pcVar46 = 0" (pointer_expression "*(undefined2 *)pcVar46" (* "*") (cast_expression "(undefined2 *)pcVar46" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pcVar46"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);" (assignment_expression "iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" (identifier "iVar39") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",local_134,iStack_130,param_2[7],0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (identifier "local_134") (, ",") (identifier "iStack_130") (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar39 == 0) break;" (if "if") (parenthesized_expression "(iVar39 == 0)" (( "(") (binary_expression "iVar39 == 0" (identifier "iVar39") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar42 = 0xfffffffe < local_134;" (assignment_expression "bVar42 = 0xfffffffe < local_134" (identifier "bVar42") (= "=") (binary_expression "0xfffffffe < local_134" (number_literal "0xfffffffe") (< "<") (identifier "local_134"))) (; ";")) (expression_statement "local_134 = local_134 + 1;" (assignment_expression "local_134 = local_134 + 1" (identifier "local_134") (= "=") (binary_expression "local_134 + 1" (identifier "local_134") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iStack_130 = iStack_130 + (uint)bVar42;" (assignment_expression "iStack_130 = iStack_130 + (uint)bVar42" (identifier "iStack_130") (= "=") (binary_expression "iStack_130 + (uint)bVar42" (identifier "iStack_130") (+ "+") (cast_expression "(uint)bVar42" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar42")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 < param_2[7])" (( "(") (binary_expression "iVar19 < param_2[7]" (identifier "iVar19") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (; ";")) (} "}"))) (expression_statement "local_164[0] = '\0';" (assignment_expression "local_164[0] = '\0'" (subscript_expression "local_164[0]" (identifier "local_164") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_164[1] = '\x01';" (assignment_expression "local_164[1] = '\x01'" (subscript_expression "local_164[1]" (identifier "local_164") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "local_a8 = (int)local_164 + (2 - (int)puVar21);" (assignment_expression "local_a8 = (int)local_164 + (2 - (int)puVar21)" (identifier "local_a8") (= "=") (binary_expression "(int)local_164 + (2 - (int)puVar21)" (cast_expression "(int)local_164" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_164")) (+ "+") (parenthesized_expression "(2 - (int)puVar21)" (( "(") (binary_expression "2 - (int)puVar21" (number_literal "2") (- "-") (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21"))) () ")")))) (; ";")) (expression_statement "local_128 = local_a8 + local_c8;" (assignment_expression "local_128 = local_a8 + local_c8" (identifier "local_128") (= "=") (binary_expression "local_a8 + local_c8" (identifier "local_a8") (+ "+") (identifier "local_c8"))) (; ";")) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" (identifier "RelinquishVirtualMemory") (argument_list "(local_124)" (( "(") (identifier "local_124") () ")"))) (; ";")) (expression_statement "local_ac = 1;" (assignment_expression "local_ac = 1" (identifier "local_ac") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_124 = iVar14;" (assignment_expression "local_124 = iVar14" (identifier "local_124") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (param_2[0xcca] == 0) goto LAB_001d14a8;" (if "if") (parenthesized_expression "(param_2[0xcca] == 0)" (( "(") (binary_expression "param_2[0xcca] == 0" (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d14a8;" (goto "goto") (statement_identifier "LAB_001d14a8") (; ";"))) (goto_statement "goto LAB_001d2640;" (goto "goto") (statement_identifier "LAB_001d2640") (; ";")) (} "}"))) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" (identifier "RelinquishVirtualMemory") (argument_list "(local_124)" (( "(") (identifier "local_124") () ")"))) (; ";")) (expression_statement "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6);" (call_expression "ThrowMagickException\n                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" (identifier "ThrowMagickException") (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"\n                   ,param_2 + 0xc6)" (( "(") (identifier "param_3") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x88d") (, ",") (number_literal "400") (, ",") (string_literal ""MemoryAllocationFailed"" (" """) (string_content "MemoryAllocationFailed") (" """)) (, ",") (string_literal ""`%s\'"" (" """) (string_content "`%s") (escape_sequence "\'") (" """)) (, ",") (binary_expression "param_2 + 0xc6" (identifier "param_2") (+ "+") (number_literal "0xc6")) () ")"))) (; ";")) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" (while "while") (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" (( "(") (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" (identifier "piVar8") (= "=") (identifier "param_2")) (, ",") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n          piVar5 = (int *)piVar8[0xccf];\n          param_2 = piVar5;\n          piVar35 = piVar8;\n        }" ({ "{") (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar8[0xccf]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[0xccf]" (identifier "piVar8") ([ "[") (number_literal "0xccf") (] "]")))) (; ";")) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" (identifier "param_2") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" (identifier "piVar35") (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (goto_statement "goto LAB_001d3a2a;" (goto "goto") (statement_identifier "LAB_001d3a2a") (; ";"))) (case_statement "case 0x10:\n        local_14c = 0;\n        local_104 = 0;\n        iStack_100 = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" (case "case") (number_literal "0x10") (: ":") (expression_statement "local_14c = 0;" (assignment_expression "local_14c = 0" (identifier "local_14c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_104 = 0;" (assignment_expression "local_104 = 0" (identifier "local_104") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_100 = 0;" (assignment_expression "iStack_100 = 0" (identifier "iStack_100") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" (if "if") (parenthesized_expression "(0 < param_2[7])" (( "(") (binary_expression "0 < param_2[7]" (number_literal "0") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" ({ "{") (do_statement "do {\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          } while ((int)local_14c < iVar39);" (do "do") (compound_statement "{\n            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);\n            if (iVar19 == 0) break;\n            iVar39 = param_2[7];\n            iVar22 = param_2[6];\n            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);\n            puVar32 = puVar20;\n            if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }\n            if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }\n            local_14c = local_14c + 1;\n            bVar42 = 0xfffffffe < local_104;\n            local_104 = local_104 + 1;\n            iStack_100 = iStack_100 + (uint)bVar42;\n          }" ({ "{") (expression_statement "iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);" (assignment_expression "iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3)" (identifier "iVar19") (= "=") (call_expression "GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3)" (identifier "GetVirtualPixels") (argument_list "(param_2,0,local_14c,param_2[6],1,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "local_14c") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar19 == 0) break;" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" (identifier "iVar39") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "iVar22 = param_2[6];" (assignment_expression "iVar22 = param_2[6]" (identifier "iVar22") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);" (assignment_expression "puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" (identifier "puVar20") (= "=") (cast_expression "(ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_168 + ((iVar39 + -1) - local_14c) * uVar17)" (( "(") (binary_expression "local_168 + ((iVar39 + -1) - local_14c) * uVar17" (identifier "local_168") (+ "+") (binary_expression "((iVar39 + -1) - local_14c) * uVar17" (parenthesized_expression "((iVar39 + -1) - local_14c)" (( "(") (binary_expression "(iVar39 + -1) - local_14c" (parenthesized_expression "(iVar39 + -1)" (( "(") (binary_expression "iVar39 + -1" (identifier "iVar39") (+ "+") (number_literal "-1")) () ")")) (- "-") (identifier "local_14c")) () ")")) (* "*") (identifier "uVar17"))) () ")")))) (; ";")) (expression_statement "puVar32 = puVar20;" (assignment_expression "puVar32 = puVar20" (identifier "puVar32") (= "=") (identifier "puVar20")) (; ";")) (if_statement "if (0 < iVar22) {\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }" (if "if") (parenthesized_expression "(0 < iVar22)" (( "(") (binary_expression "0 < iVar22" (number_literal "0") (< "<") (identifier "iVar22")) () ")")) (compound_statement "{\n              iVar40 = param_2[0xa6];\n              iVar3 = param_2[0xaa];\n              puVar32 = puVar20 + iVar22;\n              iVar4 = *(int *)(iVar3 + 8);\n              do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);\n            }" ({ "{") (expression_statement "iVar40 = param_2[0xa6];" (assignment_expression "iVar40 = param_2[0xa6]" (identifier "iVar40") (= "=") (subscript_expression "param_2[0xa6]" (identifier "param_2") ([ "[") (number_literal "0xa6") (] "]"))) (; ";")) (expression_statement "iVar3 = param_2[0xaa];" (assignment_expression "iVar3 = param_2[0xaa]" (identifier "iVar3") (= "=") (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]"))) (; ";")) (expression_statement "puVar32 = puVar20 + iVar22;" (assignment_expression "puVar32 = puVar20 + iVar22" (identifier "puVar32") (= "=") (binary_expression "puVar20 + iVar22" (identifier "puVar20") (+ "+") (identifier "iVar22"))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (do_statement "do {\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              } while (puVar20 != puVar32);" (do "do") (compound_statement "{\n                dVar47 = *(double *)(iVar19 + iVar4 * 8);\n                if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }\n                *puVar20 = uVar12;\n                iVar19 = iVar19 + iVar40 * 8;\n                puVar20 = puVar20 + 1;\n              }" ({ "{") (expression_statement "dVar47 = *(double *)(iVar19 + iVar4 * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + iVar4 * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + iVar4 * 8)" (* "*") (cast_expression "(double *)(iVar19 + iVar4 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + iVar4 * 8)" (( "(") (binary_expression "iVar19 + iVar4 * 8" (identifier "iVar19") (+ "+") (binary_expression "iVar4 * 8" (identifier "iVar4") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (iVar14 == 3) {\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }\n                else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" (if "if") (parenthesized_expression "(iVar14 == 3)" (( "(") (binary_expression "iVar14 == 3" (identifier "iVar14") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n                  uVar12 = 0xf000;\n                  if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }\n                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                  if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }\n                }" ({ "{") (expression_statement "uVar12 = 0xf000;" (assignment_expression "uVar12 = 0xf000" (identifier "uVar12") (= "=") (number_literal "0xf000")) (; ";")) (if_statement "if (*(int *)(iVar3 + 0x34) != 0) {\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }" (if "if") (parenthesized_expression "(*(int *)(iVar3 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar3 + 0x34) != 0" (pointer_expression "*(int *)(iVar3 + 0x34)" (* "*") (cast_expression "(int *)(iVar3 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x34)" (( "(") (binary_expression "iVar3 + 0x34" (identifier "iVar3") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                    uVar12 = 0;\n                    if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }\n                  }" ({ "{") (expression_statement "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);" (assignment_expression "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (identifier "dVar2") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x38) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x38) * 8" (pointer_expression "*(int *)(iVar3 + 0x38)" (* "*") (cast_expression "(int *)(iVar3 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x38)" (( "(") (binary_expression "iVar3 + 0x38" (identifier "iVar3") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar2) {\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar2)" (( "(") (binary_expression "0.0 < dVar2" (number_literal "0.0") (< "<") (identifier "dVar2")) () ")")) (compound_statement "{\n                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                      if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }\n                    }" ({ "{") (expression_statement "dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710" (identifier "dVar2") (= "=") (binary_expression "(dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar2 * (double)DAT_002a9b74)" (( "(") (binary_expression "dVar2 * (double)DAT_002a9b74" (identifier "dVar2") (* "*") (cast_expression "(double)DAT_002a9b74" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a9b74"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if (dVar2 < (double)DAT_0029f714) {\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }\n                      else {\n                        uVar12 = 0xf000;\n                      }" (if "if") (parenthesized_expression "(dVar2 < (double)DAT_0029f714)" (( "(") (binary_expression "dVar2 < (double)DAT_0029f714" (identifier "dVar2") (< "<") (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714"))) () ")")) (compound_statement "{\n                        dVar2 = dVar2 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xc);\n                      }" ({ "{") (expression_statement "dVar2 = dVar2 + (double)DAT_0029f124;" (assignment_expression "dVar2 = dVar2 + (double)DAT_0029f124" (identifier "dVar2") (= "=") (binary_expression "dVar2 + (double)DAT_0029f124" (identifier "dVar2") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar2) {\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar2)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar2" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar2")) () ")")) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar2 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar2 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar2 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar2 - (double)DAT_0029f134" (identifier "dVar2") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" (else "else") (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar2);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar2)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar2)" (identifier "ROUND") (argument_list "(dVar2)" (( "(") (identifier "dVar2") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xc);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xc)" (identifier "uVar12") (= "=") (call_expression "(ushort)(local_e4 << 0xc)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 0xc)" (( "(") (binary_expression "local_e4 << 0xc" (identifier "local_e4") (<< "<<") (number_literal "0xc")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                        uVar12 = 0xf000;\n                      }" (else "else") (compound_statement "{\n                        uVar12 = 0xf000;\n                      }" ({ "{") (expression_statement "uVar12 = 0xf000;" (assignment_expression "uVar12 = 0xf000" (identifier "uVar12") (= "=") (number_literal "0xf000")) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }\n                  }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" (( "(") (binary_expression "dVar47 * (double)DAT_002a9b74" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002a9b74" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a9b74"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xff00;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" (if "if") (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                      uVar12 = 0xff00;\n                    }" ({ "{") (expression_statement "uVar12 = 0xff00;" (assignment_expression "uVar12 = 0xff00" (identifier "uVar12") (= "=") (number_literal "0xff00")) (; ";")) (} "}")) (else_clause "else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" (else "else") (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 8);\n                    }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" (else "else") (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 8);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 8)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (ushort)(local_e4 << 8)" (identifier "uVar12") (| "|") (call_expression "(ushort)(local_e4 << 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 8)" (( "(") (binary_expression "local_e4 << 8" (identifier "local_e4") (<< "<<") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }\n                  }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" (( "(") (binary_expression "dVar47 * (double)DAT_002a9b74" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002a9b74" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a9b74"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                      uVar12 = 0xfff0;\n                    }\n                    else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" (if "if") (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                      uVar12 = 0xfff0;\n                    }" ({ "{") (expression_statement "uVar12 = 0xfff0;" (assignment_expression "uVar12 = 0xfff0" (identifier "uVar12") (= "=") (number_literal "0xfff0")) (; ";")) (} "}")) (else_clause "else {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" (else "else") (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }\n                      uVar12 = uVar12 | (ushort)(local_e4 << 4);\n                    }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" (else "else") (compound_statement "{\n                        local_e4 = (uint)(longlong)ROUND(dVar47);\n                      }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 4);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 4)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (ushort)(local_e4 << 4)" (identifier "uVar12") (| "|") (call_expression "(ushort)(local_e4 << 4)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 4)" (( "(") (binary_expression "local_e4 << 4" (identifier "local_e4") (<< "<<") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;\n                    if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }\nLAB_001d2eba:\n                    uVar12 = 0xffff;\n                  }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002a9b74)" (( "(") (binary_expression "dVar47 * (double)DAT_002a9b74" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002a9b74" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a9b74"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" (( "(") (binary_expression "dVar47 < (double)DAT_0029f714" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714"))) () ")")) (compound_statement "{\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      goto LAB_001d21be;\n                    }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if (dVar47 < (double)DAT_0029f134) {\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 < (double)DAT_0029f134" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")) (compound_statement "{\nLAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" ({ "{") (labeled_statement "LAB_001d2faa:\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);" (statement_identifier "LAB_001d2faa") (: ":") (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47)" (identifier "uVar26") (= "=") (cast_expression "(ushort)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";"))) (} "}")) (else_clause "else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" (else "else") (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" ({ "{") (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "uVar26") (= "=") (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")))) (goto_statement "goto LAB_001d21be;" (goto "goto") (statement_identifier "LAB_001d21be") (; ";")) (} "}"))) (labeled_statement "LAB_001d2eba:\n                    uVar12 = 0xffff;" (statement_identifier "LAB_001d2eba") (: ":") (expression_statement "uVar12 = 0xffff;" (assignment_expression "uVar12 = 0xffff" (identifier "uVar12") (= "=") (number_literal "0xffff")) (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" (else "else") (compound_statement "{\n                  uVar12 = 0;\n                  if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }\n                }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar14 == 2) {\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }\n                  else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" (if "if") (parenthesized_expression "(iVar14 == 2)" (( "(") (binary_expression "iVar14 == 2" (identifier "iVar14") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n                    if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }\n                  }" ({ "{") (if_statement "if (0.0 < dVar47) {\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                      uVar12 = 0xf800;\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }\n                    }" ({ "{") (expression_statement "uVar12 = 0xf800;" (assignment_expression "uVar12 = 0xf800" (identifier "uVar12") (= "=") (number_literal "0xf800")) (; ";")) (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" (( "(") (binary_expression "dVar47 * (double)DAT_002c5ed8" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002c5ed8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002c5ed8"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" (( "(") (binary_expression "dVar47 < (double)DAT_0029f714" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714"))) () ")")) (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = (ushort)(local_e4 << 0xb);\n                      }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (else "else") (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xb);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xb)" (identifier "uVar12") (= "=") (call_expression "(ushort)(local_e4 << 0xb)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 0xb)" (( "(") (binary_expression "local_e4 << 0xb" (identifier "local_e4") (<< "<<") (number_literal "0xb")) () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002cc81c)" (( "(") (binary_expression "dVar47 * (double)DAT_002cc81c" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002cc81c" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002cc81c"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" (if "if") (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                        uVar12 = 0xffe0;\n                      }" ({ "{") (expression_statement "uVar12 = 0xffe0;" (assignment_expression "uVar12 = 0xffe0" (identifier "uVar12") (= "=") (number_literal "0xffe0")) (; ";")) (} "}")) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" (else "else") (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (else "else") (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 5);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 5)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (ushort)(local_e4 << 5)" (identifier "uVar12") (| "|") (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 5)" (( "(") (binary_expression "local_e4 << 5" (identifier "local_e4") (<< "<<") (number_literal "5")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }\n                      goto LAB_001d2eba;\n                    }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" (( "(") (binary_expression "dVar47 * (double)DAT_002c5ed8" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002c5ed8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002c5ed8"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if (dVar47 < (double)DAT_0029f714) {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_0029f714)" (( "(") (binary_expression "dVar47 < (double)DAT_0029f714" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714"))) () ")")) (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        goto LAB_001d21be;\n                      }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 < (double)DAT_0029f134" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")) (goto_statement "goto LAB_001d2faa;" (goto "goto") (statement_identifier "LAB_001d2faa") (; ";"))) (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "uVar26") (= "=") (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (goto_statement "goto LAB_001d21be;" (goto "goto") (statement_identifier "LAB_001d21be") (; ";")) (} "}"))) (goto_statement "goto LAB_001d2eba;" (goto "goto") (statement_identifier "LAB_001d2eba") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" (else "else") (compound_statement "{\n                    uVar12 = 0;\n                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }\n                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);\n                    if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }\n                  }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }" (if "if") (parenthesized_expression "((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0))" (( "(") (binary_expression "(iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)" (parenthesized_expression "(iVar14 == 4)" (( "(") (binary_expression "iVar14 == 4" (identifier "iVar14") (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)" (( "(") (comma_expression "uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0" (assignment_expression "uVar12 = 0x8000" (identifier "uVar12") (= "=") (number_literal "0x8000")) (, ",") (binary_expression "*(int *)(iVar3 + 0x34) != 0" (pointer_expression "*(int *)(iVar3 + 0x34)" (* "*") (cast_expression "(int *)(iVar3 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x34)" (( "(") (binary_expression "iVar3 + 0x34" (identifier "iVar3") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);\n                      uVar12 = 0;\n                      if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }\n                    }" ({ "{") (expression_statement "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);" (assignment_expression "dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (identifier "dVar2") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x38) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x38) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x38) * 8" (pointer_expression "*(int *)(iVar3 + 0x38)" (* "*") (cast_expression "(int *)(iVar3 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x38)" (( "(") (binary_expression "iVar3 + 0x38" (identifier "iVar3") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar2) {\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }" (if "if") (parenthesized_expression "(0.0 < dVar2)" (( "(") (binary_expression "0.0 < dVar2" (number_literal "0.0") (< "<") (identifier "dVar2")) () ")")) (compound_statement "{\n                        dVar2 = dVar2 / (double)DAT_0029f710;\n                        if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }\n                      }" ({ "{") (expression_statement "dVar2 = dVar2 / (double)DAT_0029f710;" (assignment_expression "dVar2 = dVar2 / (double)DAT_0029f710" (identifier "dVar2") (= "=") (binary_expression "dVar2 / (double)DAT_0029f710" (identifier "dVar2") (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if (dVar2 < (double)DAT_0029f714) {\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }\n                        else {\n                          uVar12 = 0x8000;\n                        }" (if "if") (parenthesized_expression "(dVar2 < (double)DAT_0029f714)" (( "(") (binary_expression "dVar2 < (double)DAT_0029f714" (identifier "dVar2") (< "<") (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714"))) () ")")) (compound_statement "{\n                          dVar2 = dVar2 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }\n                          uVar12 = (ushort)(local_e4 << 0xf);\n                        }" ({ "{") (expression_statement "dVar2 = dVar2 + (double)DAT_0029f124;" (assignment_expression "dVar2 = dVar2 + (double)DAT_0029f124" (identifier "dVar2") (= "=") (binary_expression "dVar2 + (double)DAT_0029f124" (identifier "dVar2") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar2) {\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }\n                          else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar2)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar2" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar2")) () ")")) (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);\n                          }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar2 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar2 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar2 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar2 - (double)DAT_0029f134" (identifier "dVar2") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" (else "else") (compound_statement "{\n                            local_e4 = (uint)(longlong)ROUND(dVar2);\n                          }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar2)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar2)" (identifier "ROUND") (argument_list "(dVar2)" (( "(") (identifier "dVar2") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = (ushort)(local_e4 << 0xf);" (assignment_expression "uVar12 = (ushort)(local_e4 << 0xf)" (identifier "uVar12") (= "=") (call_expression "(ushort)(local_e4 << 0xf)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 0xf)" (( "(") (binary_expression "local_e4 << 0xf" (identifier "local_e4") (<< "<<") (number_literal "0xf")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                          uVar12 = 0x8000;\n                        }" (else "else") (compound_statement "{\n                          uVar12 = 0x8000;\n                        }" ({ "{") (expression_statement "uVar12 = 0x8000;" (assignment_expression "uVar12 = 0x8000" (identifier "uVar12") (= "=") (number_literal "0x8000")) (; ";")) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }\n                    }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" (( "(") (binary_expression "dVar47 * (double)DAT_002c5ed8" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002c5ed8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002c5ed8"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xfc00;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" (if "if") (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                        uVar12 = 0xfc00;\n                      }" ({ "{") (expression_statement "uVar12 = 0xfc00;" (assignment_expression "uVar12 = 0xfc00" (identifier "uVar12") (= "=") (number_literal "0xfc00")) (; ";")) (} "}")) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" (else "else") (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 10);\n                      }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (else "else") (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 10);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 10)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (ushort)(local_e4 << 10)" (identifier "uVar12") (| "|") (call_expression "(ushort)(local_e4 << 10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 10)" (( "(") (binary_expression "local_e4 << 10" (identifier "local_e4") (<< "<<") (number_literal "10")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x14) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x14) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x14) * 8" (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }\n                    }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" (( "(") (binary_expression "dVar47 * (double)DAT_002c5ed8" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002c5ed8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002c5ed8"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((double)DAT_0029f714 <= dVar47) {\n                        uVar12 = 0xffe0;\n                      }\n                      else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" (if "if") (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                        uVar12 = 0xffe0;\n                      }" ({ "{") (expression_statement "uVar12 = 0xffe0;" (assignment_expression "uVar12 = 0xffe0" (identifier "uVar12") (= "=") (number_literal "0xffe0")) (; ";")) (} "}")) (else_clause "else {\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" (else "else") (compound_statement "{\n                        dVar47 = dVar47 + (double)DAT_0029f124;\n                        if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }\n                        uVar12 = uVar12 | (ushort)(local_e4 << 5);\n                      }" ({ "{") (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }\n                        else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" (else "else") (compound_statement "{\n                          local_e4 = (uint)(longlong)ROUND(dVar47);\n                        }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (expression_statement "uVar12 = uVar12 | (ushort)(local_e4 << 5);" (assignment_expression "uVar12 = uVar12 | (ushort)(local_e4 << 5)" (identifier "uVar12") (= "=") (binary_expression "uVar12 | (ushort)(local_e4 << 5)" (identifier "uVar12") (| "|") (call_expression "(ushort)(local_e4 << 5)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(local_e4 << 5)" (( "(") (binary_expression "local_e4 << 5" (identifier "local_e4") (<< "<<") (number_literal "5")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (* "*") (cast_expression "(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + *(int *)(iVar3 + 0x20) * 8)" (( "(") (binary_expression "iVar19 + *(int *)(iVar3 + 0x20) * 8" (identifier "iVar19") (+ "+") (binary_expression "*(int *)(iVar3 + 0x20) * 8" (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;\n                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;\n                      dVar47 = dVar47 + (double)DAT_0029f124;\n                      if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }\nLAB_001d21be:\n                      uVar12 = uVar12 | uVar26;\n                    }" ({ "{") (expression_statement "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;" (assignment_expression "dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (identifier "dVar47") (= "=") (binary_expression "(dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710" (parenthesized_expression "(dVar47 * (double)DAT_002c5ed8)" (( "(") (binary_expression "dVar47 * (double)DAT_002c5ed8" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002c5ed8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002c5ed8"))) () ")")) (/ "/") (cast_expression "(double)DAT_0029f710" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f710")))) (; ";")) (if_statement "if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;" (if "if") (parenthesized_expression "((double)DAT_0029f714 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f714 <= dVar47" (cast_expression "(double)DAT_0029f714" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f714")) (<= "<=") (identifier "dVar47")) () ")")) (goto_statement "goto LAB_001d2eba;" (goto "goto") (statement_identifier "LAB_001d2eba") (; ";"))) (expression_statement "dVar47 = dVar47 + (double)DAT_0029f124;" (assignment_expression "dVar47 = dVar47 + (double)DAT_0029f124" (identifier "dVar47") (= "=") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124")))) (; ";")) (if_statement "if ((double)DAT_0029f134 <= dVar47) {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }\n                      else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" (if "if") (parenthesized_expression "((double)DAT_0029f134 <= dVar47)" (( "(") (binary_expression "(double)DAT_0029f134 <= dVar47" (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);\n                      }" ({ "{") (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (identifier "uVar26") (= "=") (cast_expression "(ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (cast_expression "(longlong)ROUND(dVar47 - (double)DAT_0029f134)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 - (double)DAT_0029f134)" (identifier "ROUND") (argument_list "(dVar47 - (double)DAT_0029f134)" (( "(") (binary_expression "dVar47 - (double)DAT_0029f134" (identifier "dVar47") (- "-") (cast_expression "(double)DAT_0029f134" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f134"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" (else "else") (compound_statement "{\n                        uVar26 = (ushort)(longlong)ROUND(dVar47);\n                      }" ({ "{") (expression_statement "uVar26 = (ushort)(longlong)ROUND(dVar47);" (assignment_expression "uVar26 = (ushort)(longlong)ROUND(dVar47)" (identifier "uVar26") (= "=") (cast_expression "(ushort)(longlong)ROUND(dVar47)" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (cast_expression "(longlong)ROUND(dVar47)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47)" (identifier "ROUND") (argument_list "(dVar47)" (( "(") (identifier "dVar47") () ")")))))) (; ";")) (} "}")))) (labeled_statement "LAB_001d21be:\n                      uVar12 = uVar12 | uVar26;" (statement_identifier "LAB_001d21be") (: ":") (expression_statement "uVar12 = uVar12 | uVar26;" (assignment_expression "uVar12 = uVar12 | uVar26" (identifier "uVar12") (= "=") (binary_expression "uVar12 | uVar26" (identifier "uVar12") (| "|") (identifier "uVar26"))) (; ";"))) (} "}"))) (} "}")))) (} "}")))) (expression_statement "*puVar20 = uVar12;" (assignment_expression "*puVar20 = uVar12" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "iVar19 = iVar19 + iVar40 * 8;" (assignment_expression "iVar19 = iVar19 + iVar40 * 8" (identifier "iVar19") (= "=") (binary_expression "iVar19 + iVar40 * 8" (identifier "iVar19") (+ "+") (binary_expression "iVar40 * 8" (identifier "iVar40") (* "*") (number_literal "8")))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar20 != puVar32)" (( "(") (binary_expression "puVar20 != puVar32" (identifier "puVar20") (!= "!=") (identifier "puVar32")) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }" (if "if") (parenthesized_expression "(uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0)" (( "(") (binary_expression "uVar17 != iVar22 * 2 &&\n                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0" (binary_expression "uVar17 != iVar22 * 2" (identifier "uVar17") (!= "!=") (binary_expression "iVar22 * 2" (identifier "iVar22") (* "*") (number_literal "2"))) (&& "&&") (binary_expression "SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0" (call_expression "SBORROW4(uVar17,iVar22 * 2)" (identifier "SBORROW4") (argument_list "(uVar17,iVar22 * 2)" (( "(") (identifier "uVar17") (, ",") (binary_expression "iVar22 * 2" (identifier "iVar22") (* "*") (number_literal "2")) () ")"))) (== "==") (binary_expression "(int)(uVar17 + iVar22 * -2) < 0" (cast_expression "(int)(uVar17 + iVar22 * -2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar17 + iVar22 * -2)" (( "(") (binary_expression "uVar17 + iVar22 * -2" (identifier "uVar17") (+ "+") (binary_expression "iVar22 * -2" (identifier "iVar22") (* "*") (number_literal "-2"))) () ")"))) (< "<") (number_literal "0")))) () ")")) (compound_statement "{\n              puVar20 = puVar32;\n              do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));\n              iVar39 = param_2[7];\n            }" ({ "{") (expression_statement "puVar20 = puVar32;" (assignment_expression "puVar20 = puVar32" (identifier "puVar20") (= "=") (identifier "puVar32")) (; ";")) (do_statement "do {\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));" (do "do") (compound_statement "{\n                puVar33 = (ushort *)((int)puVar20 + 1);\n                *(char *)puVar20 = '\0';\n                puVar20 = puVar33;\n              }" ({ "{") (expression_statement "puVar33 = (ushort *)((int)puVar20 + 1);" (assignment_expression "puVar33 = (ushort *)((int)puVar20 + 1)" (identifier "puVar33") (= "=") (cast_expression "(ushort *)((int)puVar20 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar20 + 1)" (( "(") (binary_expression "(int)puVar20 + 1" (cast_expression "(int)puVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar20")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(char *)puVar20 = '\0';" (assignment_expression "*(char *)puVar20 = '\0'" (pointer_expression "*(char *)puVar20" (* "*") (cast_expression "(char *)puVar20" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar20"))) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "puVar20 = puVar33;" (assignment_expression "puVar20 = puVar33" (identifier "puVar20") (= "=") (identifier "puVar33")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar33 != puVar32 + (uVar16 * 2 - iVar22))" (( "(") (binary_expression "puVar33 != puVar32 + (uVar16 * 2 - iVar22)" (identifier "puVar33") (!= "!=") (binary_expression "puVar32 + (uVar16 * 2 - iVar22)" (identifier "puVar32") (+ "+") (parenthesized_expression "(uVar16 * 2 - iVar22)" (( "(") (binary_expression "uVar16 * 2 - iVar22" (binary_expression "uVar16 * 2" (identifier "uVar16") (* "*") (number_literal "2")) (- "-") (identifier "iVar22")) () ")")))) () ")")) (; ";")) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" (identifier "iVar39") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (if_statement "if (param_2[0xccf] == 0) {\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }" (if "if") (parenthesized_expression "(param_2[0xccf] == 0)" (( "(") (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" (identifier "param_2") ([ "[") (number_literal "0xccf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);\n              if (iVar19 == 0) break;\n              iVar39 = param_2[7];\n            }" ({ "{") (expression_statement "iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);" (assignment_expression "iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" (identifier "iVar19") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",local_104,iStack_100,iVar39,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (identifier "local_104") (, ",") (identifier "iStack_100") (, ",") (identifier "iVar39") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar19 == 0) break;" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar39 = param_2[7];" (assignment_expression "iVar39 = param_2[7]" (identifier "iVar39") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_14c = local_14c + 1;" (assignment_expression "local_14c = local_14c + 1" (identifier "local_14c") (= "=") (binary_expression "local_14c + 1" (identifier "local_14c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar42 = 0xfffffffe < local_104;" (assignment_expression "bVar42 = 0xfffffffe < local_104" (identifier "bVar42") (= "=") (binary_expression "0xfffffffe < local_104" (number_literal "0xfffffffe") (< "<") (identifier "local_104"))) (; ";")) (expression_statement "local_104 = local_104 + 1;" (assignment_expression "local_104 = local_104 + 1" (identifier "local_104") (= "=") (binary_expression "local_104 + 1" (identifier "local_104") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iStack_100 = iStack_100 + (uint)bVar42;" (assignment_expression "iStack_100 = iStack_100 + (uint)bVar42" (identifier "iStack_100") (= "=") (binary_expression "iStack_100 + (uint)bVar42" (identifier "iStack_100") (+ "+") (cast_expression "(uint)bVar42" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar42")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)local_14c < iVar39)" (( "(") (binary_expression "(int)local_14c < iVar39" (cast_expression "(int)local_14c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_14c")) (< "<") (identifier "iVar39")) () ")")) (; ";")) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" (identifier "bVar42") (= "=") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_001d149a;" (goto "goto") (statement_identifier "LAB_001d149a") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x18:\n        uVar16 = 0;\n        local_184._0_4_ = 0;\n        local_184._4_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }\n        break;" (case "case") (number_literal "0x18") (: ":") (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" (identifier "local_184") (. ".") (field_identifier "_0_4_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_184._4_4_ = 0;" (assignment_expression "local_184._4_4_ = 0" (field_expression "local_184._4_4_" (identifier "local_184") (. ".") (field_identifier "_4_4_")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" (if "if") (parenthesized_expression "(0 < param_2[7])" (( "(") (binary_expression "0 < param_2[7]" (number_literal "0") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);\n          bVar42 = bVar11 != 2;\n          goto LAB_001d149a;\n        }" ({ "{") (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          } while ((int)uVar16 < iVar14);" (do "do") (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);\n            if (iVar14 == 0) goto LAB_001d1490;\n            iVar19 = param_2[6];\n            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;\n            if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }\n            if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }\n            iVar14 = param_2[7];\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }\n            uVar16 = uVar16 + 1;\n            bVar42 = 0xfffffffe < (uint)local_184;\n            local_184._0_4_ = (uint)local_184 + 1;\n            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;\n          }" ({ "{") (expression_statement "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" (identifier "iVar14") (= "=") (call_expression "GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3)" (identifier "GetVirtualPixels") (argument_list "(param_2,0,uVar16,param_2[6],1,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "uVar16") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d1490;" (goto "goto") (statement_identifier "LAB_001d1490") (; ";"))) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;" (assignment_expression "pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17" (identifier "pcVar46") (= "=") (binary_expression "local_168 + (~uVar16 + param_2[7]) * uVar17" (identifier "local_168") (+ "+") (binary_expression "(~uVar16 + param_2[7]) * uVar17" (parenthesized_expression "(~uVar16 + param_2[7])" (( "(") (binary_expression "~uVar16 + param_2[7]" (unary_expression "~uVar16" (~ "~") (identifier "uVar16")) (+ "+") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (* "*") (identifier "uVar17")))) (; ";")) (if_statement "if (0 < iVar19) {\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }" (if "if") (parenthesized_expression "(0 < iVar19)" (( "(") (binary_expression "0 < iVar19" (number_literal "0") (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n              iVar39 = 0;\n              pcVar38 = pcVar46;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);\n            }" ({ "{") (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" (identifier "iVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" (identifier "pcVar38") (= "=") (identifier "pcVar46")) (; ";")) (do_statement "do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              } while (iVar39 < iVar19);" (do "do") (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar38 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46 = pcVar38 + 3;\n                pcVar38[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                iVar39 = iVar39 + 1;\n                pcVar38[2] = cVar24;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                iVar19 = param_2[6];\n                pcVar38 = pcVar46;\n              }" ({ "{") (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x20) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x20)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x20)" (( "(") (binary_expression "param_2[0xaa] + 0x20" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*pcVar38 = cVar24;" (assignment_expression "*pcVar38 = cVar24" (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x14) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x14)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x14)" (( "(") (binary_expression "param_2[0xaa] + 0x14" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar46 = pcVar38 + 3;" (assignment_expression "pcVar46 = pcVar38 + 3" (identifier "pcVar46") (= "=") (binary_expression "pcVar38 + 3" (identifier "pcVar38") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pcVar38[1] = cVar24;" (assignment_expression "pcVar38[1] = cVar24" (subscript_expression "pcVar38[1]" (identifier "pcVar38") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 8) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 8) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 8)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 8)" (( "(") (binary_expression "param_2[0xaa] + 8" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" (identifier "iVar39") (= "=") (binary_expression "iVar39 + 1" (identifier "iVar39") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar38[2] = cVar24;" (assignment_expression "pcVar38[2] = cVar24" (subscript_expression "pcVar38[2]" (identifier "pcVar38") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (= "=") (binary_expression "iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (+ "+") (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" (identifier "param_2") ([ "[") (number_literal "0xa6") (] "]")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar19 = param_2[6];" (assignment_expression "iVar19 = param_2[6]" (identifier "iVar19") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" (identifier "pcVar38") (= "=") (identifier "pcVar46")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar39 < iVar19)" (( "(") (binary_expression "iVar39 < iVar19" (identifier "iVar39") (< "<") (identifier "iVar19")) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar19 * 3 < (int)uVar17) {\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }" (if "if") (parenthesized_expression "(iVar19 * 3 < (int)uVar17)" (( "(") (binary_expression "iVar19 * 3 < (int)uVar17" (binary_expression "iVar19 * 3" (identifier "iVar19") (* "*") (number_literal "3")) (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n              pcVar38 = pcVar46;\n              do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);\n            }" ({ "{") (expression_statement "pcVar38 = pcVar46;" (assignment_expression "pcVar38 = pcVar46" (identifier "pcVar38") (= "=") (identifier "pcVar46")) (; ";")) (do_statement "do {\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);" (do "do") (compound_statement "{\n                pcVar30 = pcVar38 + 1;\n                *pcVar38 = '\0';\n                pcVar38 = pcVar30;\n              }" ({ "{") (expression_statement "pcVar30 = pcVar38 + 1;" (assignment_expression "pcVar30 = pcVar38 + 1" (identifier "pcVar30") (= "=") (binary_expression "pcVar38 + 1" (identifier "pcVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pcVar38 = '\0';" (assignment_expression "*pcVar38 = '\0'" (pointer_expression "*pcVar38" (* "*") (identifier "pcVar38")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar38 = pcVar30;" (assignment_expression "pcVar38 = pcVar30" (identifier "pcVar38") (= "=") (identifier "pcVar30")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar30 != pcVar46 + uVar17 + iVar19 * -3)" (( "(") (binary_expression "pcVar30 != pcVar46 + uVar17 + iVar19 * -3" (identifier "pcVar30") (!= "!=") (binary_expression "pcVar46 + uVar17 + iVar19 * -3" (binary_expression "pcVar46 + uVar17" (identifier "pcVar46") (+ "+") (identifier "uVar17")) (+ "+") (binary_expression "iVar19 * -3" (identifier "iVar19") (* "*") (number_literal "-3")))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" (if "if") (parenthesized_expression "(param_2[0xccf] == 0)" (( "(") (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" (identifier "param_2") ([ "[") (number_literal "0xccf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);\n              if (iVar14 == 0) goto LAB_001d1490;\n              iVar14 = param_2[7];\n            }" ({ "{") (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" (identifier "iVar14") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,\n                                        0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184")) (, ",") (field_expression "local_184._4_4_" (identifier "local_184") (. ".") (field_identifier "_4_4_")) (, ",") (identifier "iVar14") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) goto LAB_001d1490;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d1490;" (goto "goto") (statement_identifier "LAB_001d1490") (; ";"))) (expression_statement "iVar14 = param_2[7];" (assignment_expression "iVar14 = param_2[7]" (identifier "iVar14") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar42 = 0xfffffffe < (uint)local_184;" (assignment_expression "bVar42 = 0xfffffffe < (uint)local_184" (identifier "bVar42") (= "=") (binary_expression "0xfffffffe < (uint)local_184" (number_literal "0xfffffffe") (< "<") (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184")))) (; ";")) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" (identifier "local_184") (. ".") (field_identifier "_0_4_")) (= "=") (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_184._4_4_ = local_184._4_4_ + (uint)bVar42;" (assignment_expression "local_184._4_4_ = local_184._4_4_ + (uint)bVar42" (field_expression "local_184._4_4_" (identifier "local_184") (. ".") (field_identifier "_4_4_")) (= "=") (binary_expression "local_184._4_4_ + (uint)bVar42" (field_expression "local_184._4_4_" (identifier "local_184") (. ".") (field_identifier "_4_4_")) (+ "+") (cast_expression "(uint)bVar42" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar42")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar16 < iVar14)" (( "(") (binary_expression "(int)uVar16 < iVar14" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (< "<") (identifier "iVar14")) () ")")) (; ";")) (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" (identifier "bVar42") (= "=") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_001d149a;" (goto "goto") (statement_identifier "LAB_001d149a") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x20:\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        iStack_178 = 0;\n        local_184._0_4_ = 0;\n        if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" (case "case") (number_literal "0x20") (: ":") (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" (identifier "local_17c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" (identifier "uStack_17a") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_178 = 0;" (assignment_expression "iStack_178 = 0" (identifier "iStack_178") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_184._0_4_ = 0;" (assignment_expression "local_184._0_4_ = 0" (field_expression "local_184._0_4_" (identifier "local_184") (. ".") (field_identifier "_0_4_")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2[7]) {\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" (if "if") (parenthesized_expression "(0 < param_2[7])" (( "(") (binary_expression "0 < param_2[7]" (number_literal "0") (< "<") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);\n        }" ({ "{") (do_statement "do {\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          } while ((int)(uint)local_184 < iVar19);" (do "do") (compound_statement "{\n            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);\n            if (iVar14 == 0) break;\n            iVar19 = param_2[7];\n            if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }\n            if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }\n            local_184._0_4_ = (uint)local_184 + 1;\n            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));\n            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;\n            local_17c = (byte)iVar14;\n            uStack_17b = (undefined1)((uint)iVar14 >> 8);\n            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);\n            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);\n          }" ({ "{") (expression_statement "iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);" (assignment_expression "iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3)" (identifier "iVar14") (= "=") (call_expression "GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3)" (identifier "GetVirtualPixels") (argument_list "(param_2,0,(uint)local_184,param_2[6],1,param_3)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184")) (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" (identifier "iVar19") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (0 < param_2[6]) {\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }" (if "if") (parenthesized_expression "(0 < param_2[6])" (( "(") (binary_expression "0 < param_2[6]" (number_literal "0") (< "<") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) () ")")) (compound_statement "{\n              iVar39 = 0;\n              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;\n              do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);\n              iVar19 = param_2[7];\n            }" ({ "{") (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" (identifier "iVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;" (assignment_expression "pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17" (identifier "pcVar46") (= "=") (binary_expression "local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17" (identifier "local_168") (+ "+") (binary_expression "((iVar19 + -1) - (uint)local_184) * uVar17" (parenthesized_expression "((iVar19 + -1) - (uint)local_184)" (( "(") (binary_expression "(iVar19 + -1) - (uint)local_184" (parenthesized_expression "(iVar19 + -1)" (( "(") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1")) () ")")) (- "-") (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184"))) () ")")) (* "*") (identifier "uVar17")))) (; ";")) (do_statement "do {\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              } while (iVar39 < param_2[6]);" (do "do") (compound_statement "{\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                *pcVar46 = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[1] = cVar24;\n                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);\n                cVar24 = '\0';\n                if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }\n                pcVar46[2] = cVar24;\n                cVar24 = -1;\n                if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }\n                pcVar46[3] = cVar24;\n                iVar39 = iVar39 + 1;\n                iVar14 = iVar14 + param_2[0xa6] * 8;\n                pcVar46 = pcVar46 + 4;\n              }" ({ "{") (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x20) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x20)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x20)" (( "(") (binary_expression "param_2[0xaa] + 0x20" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*pcVar46 = cVar24;" (assignment_expression "*pcVar46 = cVar24" (pointer_expression "*pcVar46" (* "*") (identifier "pcVar46")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x14) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x14)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x14)" (( "(") (binary_expression "param_2[0xaa] + 0x14" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar46[1] = cVar24;" (assignment_expression "pcVar46[1] = cVar24" (subscript_expression "pcVar46[1]" (identifier "pcVar46") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 8) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 8) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 8) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 8)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 8)" (( "(") (binary_expression "param_2[0xaa] + 8" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                  dVar47 = dVar47 / (double)DAT_002a7ff0;\n                  cVar24 = -1;\n                  if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }\n                }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                  }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar46[2] = cVar24;" (assignment_expression "pcVar46[2] = cVar24" (subscript_expression "pcVar46[2]" (identifier "pcVar46") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (*(int *)(param_2[0xaa] + 0x34) != 0) {\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }" (if "if") (parenthesized_expression "(*(int *)(param_2[0xaa] + 0x34) != 0)" (( "(") (binary_expression "*(int *)(param_2[0xaa] + 0x34) != 0" (pointer_expression "*(int *)(param_2[0xaa] + 0x34)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x34)" (( "(") (binary_expression "param_2[0xaa] + 0x34" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);\n                  cVar24 = '\0';\n                  if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }\n                }" ({ "{") (expression_statement "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);" (assignment_expression "dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" (* "*") (cast_expression "(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8)" (( "(") (binary_expression "iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8" (identifier "iVar14") (+ "+") (binary_expression "*(int *)(param_2[0xaa] + 0x38) * 8" (pointer_expression "*(int *)(param_2[0xaa] + 0x38)" (* "*") (cast_expression "(int *)(param_2[0xaa] + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0xaa] + 0x38)" (( "(") (binary_expression "param_2[0xaa] + 0x38" (subscript_expression "param_2[0xaa]" (identifier "param_2") ([ "[") (number_literal "0xaa") (] "]")) (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "cVar24 = '\0';" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (0.0 < dVar47) {\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n                    dVar47 = dVar47 / (double)DAT_002a7ff0;\n                    if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }\n                  }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (if_statement "if ((double)DAT_002a7ff4 <= dVar47) {\n                      cVar24 = -1;\n                    }\n                    else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" (if "if") (parenthesized_expression "((double)DAT_002a7ff4 <= dVar47)" (( "(") (binary_expression "(double)DAT_002a7ff4 <= dVar47" (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4")) (<= "<=") (identifier "dVar47")) () ")")) (compound_statement "{\n                      cVar24 = -1;\n                    }" ({ "{") (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" (else "else") (compound_statement "{\n                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);\n                    }" ({ "{") (expression_statement "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "cVar24") (= "=") (cast_expression "(char)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (expression_statement "pcVar46[3] = cVar24;" (assignment_expression "pcVar46[3] = cVar24" (subscript_expression "pcVar46[3]" (identifier "pcVar46") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "cVar24")) (; ";")) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" (identifier "iVar39") (= "=") (binary_expression "iVar39 + 1" (identifier "iVar39") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar14 = iVar14 + param_2[0xa6] * 8;" (assignment_expression "iVar14 = iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (= "=") (binary_expression "iVar14 + param_2[0xa6] * 8" (identifier "iVar14") (+ "+") (binary_expression "param_2[0xa6] * 8" (subscript_expression "param_2[0xa6]" (identifier "param_2") ([ "[") (number_literal "0xa6") (] "]")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "pcVar46 = pcVar46 + 4;" (assignment_expression "pcVar46 = pcVar46 + 4" (identifier "pcVar46") (= "=") (binary_expression "pcVar46 + 4" (identifier "pcVar46") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar39 < param_2[6])" (( "(") (binary_expression "iVar39 < param_2[6]" (identifier "iVar39") (< "<") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) () ")")) (; ";")) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" (identifier "iVar19") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (if_statement "if (param_2[0xccf] == 0) {\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }" (if "if") (parenthesized_expression "(param_2[0xccf] == 0)" (( "(") (binary_expression "param_2[0xccf] == 0" (subscript_expression "param_2[0xccf]" (identifier "param_2") ([ "[") (number_literal "0xccf") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);\n              if (iVar14 == 0) break;\n              iVar19 = param_2[7];\n            }" ({ "{") (expression_statement "iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0);" (assignment_expression "iVar14 = SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" (identifier "iVar14") (= "=") (call_expression "SetImageProgress(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Image",\n                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),\n                                        iStack_178,iVar19,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Image"" (" """) (string_content "Save/Image") (" """)) (, ",") (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")"))) (, ",") (identifier "iStack_178") (, ",") (identifier "iVar19") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar19 = param_2[7];" (assignment_expression "iVar19 = param_2[7]" (identifier "iVar19") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_184._0_4_ = (uint)local_184 + 1;" (assignment_expression "local_184._0_4_ = (uint)local_184 + 1" (field_expression "local_184._0_4_" (identifier "local_184") (. ".") (field_identifier "_0_4_")) (= "=") (binary_expression "(uint)local_184 + 1" (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));" (assignment_expression "uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "uVar16") (= "=") (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")")))) (; ";")) (expression_statement "iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;" (assignment_expression "iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" (identifier "iVar14") (= "=") (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_17c = (byte)iVar14;" (assignment_expression "local_17c = (byte)iVar14" (identifier "local_17c") (= "=") (cast_expression "(byte)iVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar14"))) (; ";")) (expression_statement "uStack_17b = (undefined1)((uint)iVar14 >> 8);" (assignment_expression "uStack_17b = (undefined1)((uint)iVar14 >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)((uint)iVar14 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)iVar14 >> 8)" (( "(") (binary_expression "(uint)iVar14 >> 8" (cast_expression "(uint)iVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar14")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_17a = (undefined2)((uint)iVar14 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)((uint)iVar14 >> 0x10)" (identifier "uStack_17a") (= "=") (call_expression "(undefined2)((uint)iVar14 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)iVar14 >> 0x10)" (( "(") (binary_expression "(uint)iVar14 >> 0x10" (cast_expression "(uint)iVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar14")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);" (assignment_expression "iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16)" (identifier "iStack_178") (= "=") (binary_expression "iStack_178 + (uint)(0xfffffffe < uVar16)" (identifier "iStack_178") (+ "+") (call_expression "(uint)(0xfffffffe < uVar16)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < uVar16)" (( "(") (binary_expression "0xfffffffe < uVar16" (number_literal "0xfffffffe") (< "<") (identifier "uVar16")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)(uint)local_184 < iVar19)" (( "(") (binary_expression "(int)(uint)local_184 < iVar19" (cast_expression "(int)(uint)local_184" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)local_184" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_184"))) (< "<") (identifier "iVar19")) () ")")) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_001d1490:\n      bVar42 = bVar11 != 2;" (statement_identifier "LAB_001d1490") (: ":") (expression_statement "bVar42 = bVar11 != 2;" (assignment_expression "bVar42 = bVar11 != 2" (identifier "bVar42") (= "=") (binary_expression "bVar11 != 2" (identifier "bVar11") (!= "!=") (number_literal "2"))) (; ";"))) (labeled_statement "LAB_001d149a:\n      bVar29 = bVar42;" (statement_identifier "LAB_001d149a") (: ":") (expression_statement "bVar29 = bVar42;" (assignment_expression "bVar29 = bVar42" (identifier "bVar29") (= "=") (identifier "bVar42")) (; ";"))) (if_statement "if (param_2[0xcca] == 0) {\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }\n      else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" (if "if") (parenthesized_expression "(param_2[0xcca] == 0)" (( "(") (binary_expression "param_2[0xcca] == 0" (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;\nLAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);\n        uVar16 = GetStringInfoLength(iVar13);\n        local_17c = (byte)uVar16;\n        uStack_17b = (undefined1)(uVar16 >> 8);\n        uStack_17a = (undefined2)(uVar16 >> 0x10);\n        uVar17 = uVar16 & 3;\n        if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }\n        local_128 = uVar16 + local_128 + local_174;\n      }" ({ "{") (labeled_statement "LAB_001d14a8:\n        if (iVar13 == 0) goto LAB_001d279e;" (statement_identifier "LAB_001d14a8") (: ":") (if_statement "if (iVar13 == 0) goto LAB_001d279e;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d279e;" (goto "goto") (statement_identifier "LAB_001d279e") (; ";")))) (labeled_statement "LAB_001d14b4:\n        local_164 = (char *)(local_128 + -0xe);" (statement_identifier "LAB_001d14b4") (: ":") (expression_statement "local_164 = (char *)(local_128 + -0xe);" (assignment_expression "local_164 = (char *)(local_128 + -0xe)" (identifier "local_164") (= "=") (cast_expression "(char *)(local_128 + -0xe)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_128 + -0xe)" (( "(") (binary_expression "local_128 + -0xe" (identifier "local_128") (+ "+") (number_literal "-0xe")) () ")")))) (; ";"))) (expression_statement "uVar16 = GetStringInfoLength(iVar13);" (assignment_expression "uVar16 = GetStringInfoLength(iVar13)" (identifier "uVar16") (= "=") (call_expression "GetStringInfoLength(iVar13)" (identifier "GetStringInfoLength") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (; ";")) (expression_statement "local_17c = (byte)uVar16;" (assignment_expression "local_17c = (byte)uVar16" (identifier "local_17c") (= "=") (cast_expression "(byte)uVar16" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "uStack_17b = (undefined1)(uVar16 >> 8);" (assignment_expression "uStack_17b = (undefined1)(uVar16 >> 8)" (identifier "uStack_17b") (= "=") (call_expression "(undefined1)(uVar16 >> 8)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "(uVar16 >> 8)" (( "(") (binary_expression "uVar16 >> 8" (identifier "uVar16") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uStack_17a = (undefined2)(uVar16 >> 0x10);" (assignment_expression "uStack_17a = (undefined2)(uVar16 >> 0x10)" (identifier "uStack_17a") (= "=") (call_expression "(undefined2)(uVar16 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "(uVar16 >> 0x10)" (( "(") (binary_expression "uVar16 >> 0x10" (identifier "uVar16") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar17 = uVar16 & 3;" (assignment_expression "uVar17 = uVar16 & 3" (identifier "uVar17") (= "=") (binary_expression "uVar16 & 3" (identifier "uVar16") (& "&") (number_literal "3"))) (; ";")) (if_statement "if (uVar17 == 0) {\n          local_174 = 0;\n          local_170 = 0;\n        }\n        else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_174 = 0;\n          local_170 = 0;\n        }" ({ "{") (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" (identifier "local_174") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" (identifier "local_170") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" (else "else") (compound_statement "{\n          local_174 = 4 - uVar17;\n          local_170 = -(uint)(4 < uVar17);\n        }" ({ "{") (expression_statement "local_174 = 4 - uVar17;" (assignment_expression "local_174 = 4 - uVar17" (identifier "local_174") (= "=") (binary_expression "4 - uVar17" (number_literal "4") (- "-") (identifier "uVar17"))) (; ";")) (expression_statement "local_170 = -(uint)(4 < uVar17);" (assignment_expression "local_170 = -(uint)(4 < uVar17)" (identifier "local_170") (= "=") (unary_expression "-(uint)(4 < uVar17)" (- "-") (call_expression "(uint)(4 < uVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(4 < uVar17)" (( "(") (binary_expression "4 < uVar17" (number_literal "4") (< "<") (identifier "uVar17")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_128 = uVar16 + local_128 + local_174;" (assignment_expression "local_128 = uVar16 + local_128 + local_174" (identifier "local_128") (= "=") (binary_expression "uVar16 + local_128 + local_174" (binary_expression "uVar16 + local_128" (identifier "uVar16") (+ "+") (identifier "local_128")) (+ "+") (identifier "local_174"))) (; ";")) (} "}")) (else_clause "else {\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" (else "else") (compound_statement "{\nLAB_001d2640:\n        dVar47 = (double)bVar11;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);\n        if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }\n        dVar47 = (double)(uint)param_2[8];\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);\n        if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }\n        dVar47 = (double)uVar7;\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);\n        if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);\n        if (iVar13 != 0) goto LAB_001d14b4;\nLAB_001d279e:\n        local_174 = 0;\n        local_170 = 0;\n        local_17c = 0;\n        uStack_17b = 0;\n        uStack_17a = 0;\n        local_164 = (char *)0x0;\n      }" ({ "{") (labeled_statement "LAB_001d2640:\n        dVar47 = (double)bVar11;" (statement_identifier "LAB_001d2640") (: ":") (expression_statement "dVar47 = (double)bVar11;" (assignment_expression "dVar47 = (double)bVar11" (identifier "dVar47") (= "=") (cast_expression "(double)bVar11" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "bVar11"))) (; ";"))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x89e,\n                       "   Writing BMP version %.20g datastream",dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x89e") (, ",") (string_literal ""   Writing BMP version %.20g datastream"" (" """) (string_content "   Writing BMP version %.20g datastream") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (if_statement "if (*param_2 == 1) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" (if "if") (parenthesized_expression "(*param_2 == 1)" (( "(") (binary_expression "*param_2 == 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);\n        }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",\n                         dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x8a1") (, ",") (string_literal ""   Storage class=DirectClass"" (" """) (string_content "   Storage class=DirectClass") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" (else "else") (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);\n        }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",\n                         dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x8a4") (, ",") (string_literal ""   Storage class=PseudoClass"" (" """) (string_content "   Storage class=PseudoClass") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (} "}")))) (expression_statement "dVar47 = (double)(uint)param_2[8];" (assignment_expression "dVar47 = (double)(uint)param_2[8]" (identifier "dVar47") (= "=") (cast_expression "(double)(uint)param_2[8]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(uint)param_2[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))))) (; ";")) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x8a6") (, ",") (string_literal ""   Image depth=%.20g"" (" """) (string_content "   Image depth=%.20g") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (if_statement "if (param_2[0xa5] == 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }\n        else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" (if "if") (parenthesized_expression "(param_2[0xa5] == 0)" (( "(") (binary_expression "param_2[0xa5] == 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);\n        }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x8ac") (, ",") (string_literal ""   Matte=MagickFalse"" (" """) (string_content "   Matte=MagickFalse") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" (else "else") (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);\n        }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x8a9") (, ",") (string_literal ""   Matte=True"" (" """) (string_content "   Matte=True") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (} "}")))) (expression_statement "dVar47 = (double)uVar7;" (assignment_expression "dVar47 = (double)uVar7" (identifier "dVar47") (= "=") (cast_expression "(double)uVar7" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",\n                       dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x8ae") (, ",") (string_literal ""   BMP bits_per_pixel=%.20g"" (" """) (string_content "   BMP bits_per_pixel=%.20g") (" """)) (, ",") (identifier "dVar47") () ")"))) (; ";")) (if_statement "if (local_ac == 1) {\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }\n        else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" (if "if") (parenthesized_expression "(local_ac == 1)" (( "(") (binary_expression "local_ac == 1" (identifier "local_ac") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          pcVar46 = "   Compression=BI_RLE8";\n          uVar45 = 0x8ba;\n        }" ({ "{") (expression_statement "pcVar46 = "   Compression=BI_RLE8";" (assignment_expression "pcVar46 = "   Compression=BI_RLE8"" (identifier "pcVar46") (= "=") (string_literal ""   Compression=BI_RLE8"" (" """) (string_content "   Compression=BI_RLE8") (" """))) (; ";")) (expression_statement "uVar45 = 0x8ba;" (assignment_expression "uVar45 = 0x8ba" (identifier "uVar45") (= "=") (number_literal "0x8ba")) (; ";")) (} "}")) (else_clause "else if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" (else "else") (if_statement "if (local_ac == 0) {\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }\n        else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" (if "if") (parenthesized_expression "(local_ac == 0)" (( "(") (binary_expression "local_ac == 0" (identifier "local_ac") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar46 = "   Compression=BI_RGB";\n          uVar45 = 0x8b4;\n        }" ({ "{") (expression_statement "pcVar46 = "   Compression=BI_RGB";" (assignment_expression "pcVar46 = "   Compression=BI_RGB"" (identifier "pcVar46") (= "=") (string_literal ""   Compression=BI_RGB"" (" """) (string_content "   Compression=BI_RGB") (" """))) (; ";")) (expression_statement "uVar45 = 0x8b4;" (assignment_expression "uVar45 = 0x8b4" (identifier "uVar45") (= "=") (number_literal "0x8b4")) (; ";")) (} "}")) (else_clause "else if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" (else "else") (if_statement "if (local_ac == 3) {\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }\n        else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" (if "if") (parenthesized_expression "(local_ac == 3)" (( "(") (binary_expression "local_ac == 3" (identifier "local_ac") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n          pcVar46 = "   Compression=BI_BITFIELDS";\n          uVar45 = 0x8c0;\n        }" ({ "{") (expression_statement "pcVar46 = "   Compression=BI_BITFIELDS";" (assignment_expression "pcVar46 = "   Compression=BI_BITFIELDS"" (identifier "pcVar46") (= "=") (string_literal ""   Compression=BI_BITFIELDS"" (" """) (string_content "   Compression=BI_BITFIELDS") (" """))) (; ";")) (expression_statement "uVar45 = 0x8c0;" (assignment_expression "uVar45 = 0x8c0" (identifier "uVar45") (= "=") (number_literal "0x8c0")) (; ";")) (} "}")) (else_clause "else {\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" (else "else") (compound_statement "{\n          dVar47 = (double)(ulonglong)local_ac;\n          pcVar46 = "   Compression=UNKNOWN (%u)";\n          uVar45 = 0x8c6;\n        }" ({ "{") (expression_statement "dVar47 = (double)(ulonglong)local_ac;" (assignment_expression "dVar47 = (double)(ulonglong)local_ac" (identifier "dVar47") (= "=") (cast_expression "(double)(ulonglong)local_ac" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(ulonglong)local_ac" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_ac")))) (; ";")) (expression_statement "pcVar46 = "   Compression=UNKNOWN (%u)";" (assignment_expression "pcVar46 = "   Compression=UNKNOWN (%u)"" (identifier "pcVar46") (= "=") (string_literal ""   Compression=UNKNOWN (%u)"" (" """) (string_content "   Compression=UNKNOWN (%u)") (" """))) (; ";")) (expression_statement "uVar45 = 0x8c6;" (assignment_expression "uVar45 = 0x8c6" (identifier "uVar45") (= "=") (number_literal "0x8c6")) (; ";")) (} "}")))))))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (identifier "uVar45") (, ",") (identifier "pcVar46") (, ",") (identifier "dVar47") () ")"))) (; ";")) (if_statement "if (local_144 == 0) {\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }\n        else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" (if "if") (parenthesized_expression "(local_144 == 0)" (( "(") (binary_expression "local_144 == 0" (identifier "local_144") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar46 = "   Number_colors=unspecified";\n          uVar45 = 0x8cc;\n        }" ({ "{") (expression_statement "pcVar46 = "   Number_colors=unspecified";" (assignment_expression "pcVar46 = "   Number_colors=unspecified"" (identifier "pcVar46") (= "=") (string_literal ""   Number_colors=unspecified"" (" """) (string_content "   Number_colors=unspecified") (" """))) (; ";")) (expression_statement "uVar45 = 0x8cc;" (assignment_expression "uVar45 = 0x8cc" (identifier "uVar45") (= "=") (number_literal "0x8cc")) (; ";")) (} "}")) (else_clause "else {\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" (else "else") (compound_statement "{\n          pcVar46 = "   Number_colors=%u";\n          dVar47 = (double)(ulonglong)local_144;\n          uVar45 = 0x8cf;\n        }" ({ "{") (expression_statement "pcVar46 = "   Number_colors=%u";" (assignment_expression "pcVar46 = "   Number_colors=%u"" (identifier "pcVar46") (= "=") (string_literal ""   Number_colors=%u"" (" """) (string_content "   Number_colors=%u") (" """))) (; ";")) (expression_statement "dVar47 = (double)(ulonglong)local_144;" (assignment_expression "dVar47 = (double)(ulonglong)local_144" (identifier "dVar47") (= "=") (cast_expression "(double)(ulonglong)local_144" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(ulonglong)local_144" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_144")))) (; ";")) (expression_statement "uVar45 = 0x8cf;" (assignment_expression "uVar45 = 0x8cf" (identifier "uVar45") (= "=") (number_literal "0x8cf")) (; ";")) (} "}")))) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (identifier "uVar45") (, ",") (identifier "pcVar46") (, ",") (identifier "dVar47") () ")"))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_001d14b4;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d14b4;" (goto "goto") (statement_identifier "LAB_001d14b4") (; ";"))) (labeled_statement "LAB_001d279e:\n        local_174 = 0;" (statement_identifier "LAB_001d279e") (: ":") (expression_statement "local_174 = 0;" (assignment_expression "local_174 = 0" (identifier "local_174") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_170 = 0;" (assignment_expression "local_170 = 0" (identifier "local_170") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_17c = 0;" (assignment_expression "local_17c = 0" (identifier "local_17c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_17b = 0;" (assignment_expression "uStack_17b = 0" (identifier "uStack_17b") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_17a = 0;" (assignment_expression "uStack_17a = 0" (identifier "uStack_17a") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_164 = (char *)0x0;" (assignment_expression "local_164 = (char *)0x0" (identifier "local_164") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "WriteBlob(param_2,2);" (call_expression "WriteBlob(param_2,2)" (identifier "WriteBlob") (argument_list "(param_2,2)" (( "(") (identifier "param_2") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_128);" (call_expression "WriteBlobLSBLong(param_2,local_128)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_128)" (( "(") (identifier "param_2") (, ",") (identifier "local_128") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,0);" (call_expression "WriteBlobLSBLong(param_2,0)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,0)" (( "(") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_c0);" (call_expression "WriteBlobLSBLong(param_2,local_c0)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_c0)" (( "(") (identifier "param_2") (, ",") (identifier "local_c0") () ")"))) (; ";")) (if_statement "if (bVar11 == 2) {\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }\n      else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" (if "if") (parenthesized_expression "(bVar11 == 2)" (( "(") (binary_expression "bVar11 == 2" (identifier "bVar11") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        WriteBlobLSBLong(param_2,local_bc);\n        local_120 = (short)iVar18;\n        WriteBlobLSBSignedShort(param_2,(int)local_120);\n        local_11c = (short)iVar28;\n        WriteBlobLSBSignedShort(param_2,(int)local_11c);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" ({ "{") (expression_statement "WriteBlobLSBLong(param_2,local_bc);" (call_expression "WriteBlobLSBLong(param_2,local_bc)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_bc)" (( "(") (identifier "param_2") (, ",") (identifier "local_bc") () ")"))) (; ";")) (expression_statement "local_120 = (short)iVar18;" (assignment_expression "local_120 = (short)iVar18" (identifier "local_120") (= "=") (cast_expression "(short)iVar18" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar18"))) (; ";")) (expression_statement "WriteBlobLSBSignedShort(param_2,(int)local_120);" (call_expression "WriteBlobLSBSignedShort(param_2,(int)local_120)" (identifier "WriteBlobLSBSignedShort") (argument_list "(param_2,(int)local_120)" (( "(") (identifier "param_2") (, ",") (cast_expression "(int)local_120" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_120")) () ")"))) (; ";")) (expression_statement "local_11c = (short)iVar28;" (assignment_expression "local_11c = (short)iVar28" (identifier "local_11c") (= "=") (cast_expression "(short)iVar28" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar28"))) (; ";")) (expression_statement "WriteBlobLSBSignedShort(param_2,(int)local_11c);" (call_expression "WriteBlobLSBSignedShort(param_2,(int)local_11c)" (identifier "WriteBlobLSBSignedShort") (argument_list "(param_2,(int)local_11c)" (( "(") (identifier "param_2") (, ",") (cast_expression "(int)local_11c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_11c")) () ")"))) (; ";")) (expression_statement "WriteBlobLSBShort(param_2,1);" (call_expression "WriteBlobLSBShort(param_2,1)" (identifier "WriteBlobLSBShort") (argument_list "(param_2,1)" (( "(") (identifier "param_2") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "WriteBlobLSBShort(param_2,uVar7);" (call_expression "WriteBlobLSBShort(param_2,uVar7)" (identifier "WriteBlobLSBShort") (argument_list "(param_2,uVar7)" (( "(") (identifier "param_2") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "iVar18 = *param_2;" (assignment_expression "iVar18 = *param_2" (identifier "iVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" (identifier "iVar14") (= "=") (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" (else "else") (compound_statement "{\n        WriteBlobLSBLong(param_2,local_bc);\n        WriteBlobLSBSignedLong(param_2,iVar18);\n        WriteBlobLSBSignedLong(param_2,iVar28);\n        WriteBlobLSBShort(param_2,1);\n        WriteBlobLSBShort(param_2,uVar7);\n        WriteBlobLSBLong(param_2,local_ac);\n        WriteBlobLSBLong(param_2,local_a8);\n        WriteBlobLSBLong(param_2,local_a4);\n        WriteBlobLSBLong(param_2,local_a0);\n        WriteBlobLSBLong(param_2,local_144);\n        WriteBlobLSBLong(param_2,local_144);\n        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }\n        iVar18 = *param_2;\n        iVar14 = param_2[0xcca];\n      }" ({ "{") (expression_statement "WriteBlobLSBLong(param_2,local_bc);" (call_expression "WriteBlobLSBLong(param_2,local_bc)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_bc)" (( "(") (identifier "param_2") (, ",") (identifier "local_bc") () ")"))) (; ";")) (expression_statement "WriteBlobLSBSignedLong(param_2,iVar18);" (call_expression "WriteBlobLSBSignedLong(param_2,iVar18)" (identifier "WriteBlobLSBSignedLong") (argument_list "(param_2,iVar18)" (( "(") (identifier "param_2") (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "WriteBlobLSBSignedLong(param_2,iVar28);" (call_expression "WriteBlobLSBSignedLong(param_2,iVar28)" (identifier "WriteBlobLSBSignedLong") (argument_list "(param_2,iVar28)" (( "(") (identifier "param_2") (, ",") (identifier "iVar28") () ")"))) (; ";")) (expression_statement "WriteBlobLSBShort(param_2,1);" (call_expression "WriteBlobLSBShort(param_2,1)" (identifier "WriteBlobLSBShort") (argument_list "(param_2,1)" (( "(") (identifier "param_2") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "WriteBlobLSBShort(param_2,uVar7);" (call_expression "WriteBlobLSBShort(param_2,uVar7)" (identifier "WriteBlobLSBShort") (argument_list "(param_2,uVar7)" (( "(") (identifier "param_2") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_ac);" (call_expression "WriteBlobLSBLong(param_2,local_ac)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_ac)" (( "(") (identifier "param_2") (, ",") (identifier "local_ac") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_a8);" (call_expression "WriteBlobLSBLong(param_2,local_a8)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_a8)" (( "(") (identifier "param_2") (, ",") (identifier "local_a8") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_a4);" (call_expression "WriteBlobLSBLong(param_2,local_a4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_a4)" (( "(") (identifier "param_2") (, ",") (identifier "local_a4") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_a0);" (call_expression "WriteBlobLSBLong(param_2,local_a0)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_a0)" (( "(") (identifier "param_2") (, ",") (identifier "local_a0") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_144);" (call_expression "WriteBlobLSBLong(param_2,local_144)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_144)" (( "(") (identifier "param_2") (, ",") (identifier "local_144") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_144);" (call_expression "WriteBlobLSBLong(param_2,local_144)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_144)" (( "(") (identifier "param_2") (, ",") (identifier "local_144") () ")"))) (; ";")) (if_statement "if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }" (if "if") (parenthesized_expression "((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0))" (( "(") (binary_expression "(bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)" (parenthesized_expression "(bVar11 == 4)" (( "(") (binary_expression "bVar11 == 4" (identifier "bVar11") (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(bVar6 || param_2[0xa5] != 0)" (( "(") (binary_expression "bVar6 || param_2[0xa5] != 0" (identifier "bVar6") (|| "||") (binary_expression "param_2[0xa5] != 0" (subscript_expression "param_2[0xa5]" (identifier "param_2") ([ "[") (number_literal "0xa5") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          WriteBlobLSBLong(param_2,local_98);\n          WriteBlobLSBLong(param_2,local_94);\n          WriteBlobLSBLong(param_2,local_90);\n          WriteBlobLSBLong(param_2,local_8c);\n          if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }\n          dVar47 = *(double *)(param_2 + 0x5d);\n          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }\n          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }\n          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }\n          if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }\n          dVar47 = local_38;\n          if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }\n          dVar2 = local_30;\n          if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }\n          dVar9 = local_28;\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002cc820;\n          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          dVar1 = (double)DAT_002b2420;\n          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);\n          WriteBlobLSBLong(param_2,local_e4);\n          if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }\n        }" ({ "{") (expression_statement "WriteBlobLSBLong(param_2,local_98);" (call_expression "WriteBlobLSBLong(param_2,local_98)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_98)" (( "(") (identifier "param_2") (, ",") (identifier "local_98") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_94);" (call_expression "WriteBlobLSBLong(param_2,local_94)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_94)" (( "(") (identifier "param_2") (, ",") (identifier "local_94") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_90);" (call_expression "WriteBlobLSBLong(param_2,local_90)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_90)" (( "(") (identifier "param_2") (, ",") (identifier "local_90") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_8c);" (call_expression "WriteBlobLSBLong(param_2,local_8c)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_8c)" (( "(") (identifier "param_2") (, ",") (identifier "local_8c") () ")"))) (; ";")) (if_statement "if (iVar13 == 0) {\n            WriteBlobLSBLong(param_2,0x73524742);\n          }\n          else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            WriteBlobLSBLong(param_2,0x73524742);\n          }" ({ "{") (expression_statement "WriteBlobLSBLong(param_2,0x73524742);" (call_expression "WriteBlobLSBLong(param_2,0x73524742)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,0x73524742)" (( "(") (identifier "param_2") (, ",") (number_literal "0x73524742") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" (else "else") (compound_statement "{\n            WriteBlobLSBLong(param_2,0x4d424544);\n          }" ({ "{") (expression_statement "WriteBlobLSBLong(param_2,0x4d424544);" (call_expression "WriteBlobLSBLong(param_2,0x4d424544)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,0x4d424544)" (( "(") (identifier "param_2") (, ",") (number_literal "0x4d424544") () ")"))) (; ";")) (} "}")))) (expression_statement "dVar47 = *(double *)(param_2 + 0x5d);" (assignment_expression "dVar47 = *(double *)(param_2 + 0x5d)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(param_2 + 0x5d)" (* "*") (cast_expression "(double *)(param_2 + 0x5d)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5d)" (( "(") (binary_expression "param_2 + 0x5d" (identifier "param_2") (+ "+") (number_literal "0x5d")) () ")"))))) (; ";")) (if_statement "if ((1.0 < dVar47) || (dVar47 <= 0.0)) {\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }\n          else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" (if "if") (parenthesized_expression "((1.0 < dVar47) || (dVar47 <= 0.0))" (( "(") (binary_expression "(1.0 < dVar47) || (dVar47 <= 0.0)" (parenthesized_expression "(1.0 < dVar47)" (( "(") (binary_expression "1.0 < dVar47" (number_literal "1.0") (< "<") (identifier "dVar47")) () ")")) (|| "||") (parenthesized_expression "(dVar47 <= 0.0)" (( "(") (binary_expression "dVar47 <= 0.0" (identifier "dVar47") (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            local_e4 = 0;\n            param_2[0x5d] = 0;\n            param_2[0x5e] = 0;\n          }" ({ "{") (expression_statement "local_e4 = 0;" (assignment_expression "local_e4 = 0" (identifier "local_e4") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x5d] = 0;" (assignment_expression "param_2[0x5d] = 0" (subscript_expression "param_2[0x5d]" (identifier "param_2") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x5e] = 0;" (assignment_expression "param_2[0x5e] = 0" (subscript_expression "param_2[0x5e]" (identifier "param_2") ([ "[") (number_literal "0x5e") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" (else "else") (compound_statement "{\n            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);\n          }" ({ "{") (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar47 * (double)DAT_002cc820)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar47 * (double)DAT_002cc820)" (identifier "ROUND") (argument_list "(dVar47 * (double)DAT_002cc820)" (( "(") (binary_expression "dVar47 * (double)DAT_002cc820" (identifier "dVar47") (* "*") (cast_expression "(double)DAT_002cc820" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002cc820"))) () ")")))))) (; ";")) (} "}")))) (if_statement "if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }" (if "if") (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0))" (( "(") (binary_expression "(1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x5f))" (( "(") (binary_expression "1.0 < *(double *)(param_2 + 0x5f)" (number_literal "1.0") (< "<") (pointer_expression "*(double *)(param_2 + 0x5f)" (* "*") (cast_expression "(double *)(param_2 + 0x5f)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5f)" (( "(") (binary_expression "param_2 + 0x5f" (identifier "param_2") (+ "+") (number_literal "0x5f")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(double *)(param_2 + 0x5f) <= 0.0)" (( "(") (binary_expression "*(double *)(param_2 + 0x5f) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x5f)" (* "*") (cast_expression "(double *)(param_2 + 0x5f)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5f)" (( "(") (binary_expression "param_2 + 0x5f" (identifier "param_2") (+ "+") (number_literal "0x5f")) () ")")))) (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            param_2[0x5f] = 0;\n            param_2[0x60] = 0;\n          }" ({ "{") (expression_statement "param_2[0x5f] = 0;" (assignment_expression "param_2[0x5f] = 0" (subscript_expression "param_2[0x5f]" (identifier "param_2") ([ "[") (number_literal "0x5f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x60] = 0;" (assignment_expression "param_2[0x60] = 0" (subscript_expression "param_2[0x60]" (identifier "param_2") ([ "[") (number_literal "0x60") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }" (if "if") (parenthesized_expression "((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0))" (( "(") (binary_expression "(1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 99))" (( "(") (binary_expression "1.0 < *(double *)(param_2 + 99)" (number_literal "1.0") (< "<") (pointer_expression "*(double *)(param_2 + 99)" (* "*") (cast_expression "(double *)(param_2 + 99)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 99)" (( "(") (binary_expression "param_2 + 99" (identifier "param_2") (+ "+") (number_literal "99")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(double *)(param_2 + 99) <= 0.0)" (( "(") (binary_expression "*(double *)(param_2 + 99) <= 0.0" (pointer_expression "*(double *)(param_2 + 99)" (* "*") (cast_expression "(double *)(param_2 + 99)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 99)" (( "(") (binary_expression "param_2 + 99" (identifier "param_2") (+ "+") (number_literal "99")) () ")")))) (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            param_2[99] = 0;\n            param_2[100] = 0;\n          }" ({ "{") (expression_statement "param_2[99] = 0;" (assignment_expression "param_2[99] = 0" (subscript_expression "param_2[99]" (identifier "param_2") ([ "[") (number_literal "99") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[100] = 0;" (assignment_expression "param_2[100] = 0" (subscript_expression "param_2[100]" (identifier "param_2") ([ "[") (number_literal "100") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }" (if "if") (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0))" (( "(") (binary_expression "(1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x65))" (( "(") (binary_expression "1.0 < *(double *)(param_2 + 0x65)" (number_literal "1.0") (< "<") (pointer_expression "*(double *)(param_2 + 0x65)" (* "*") (cast_expression "(double *)(param_2 + 0x65)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x65)" (( "(") (binary_expression "param_2 + 0x65" (identifier "param_2") (+ "+") (number_literal "0x65")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(double *)(param_2 + 0x65) <= 0.0)" (( "(") (binary_expression "*(double *)(param_2 + 0x65) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x65)" (* "*") (cast_expression "(double *)(param_2 + 0x65)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x65)" (( "(") (binary_expression "param_2 + 0x65" (identifier "param_2") (+ "+") (number_literal "0x65")) () ")")))) (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            param_2[0x65] = 0;\n            param_2[0x66] = 0;\n          }" ({ "{") (expression_statement "param_2[0x65] = 0;" (assignment_expression "param_2[0x65] = 0" (subscript_expression "param_2[0x65]" (identifier "param_2") ([ "[") (number_literal "0x65") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x66] = 0;" (assignment_expression "param_2[0x66] = 0" (subscript_expression "param_2[0x66]" (identifier "param_2") ([ "[") (number_literal "0x66") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }" (if "if") (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0))" (( "(") (binary_expression "(1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x69))" (( "(") (binary_expression "1.0 < *(double *)(param_2 + 0x69)" (number_literal "1.0") (< "<") (pointer_expression "*(double *)(param_2 + 0x69)" (* "*") (cast_expression "(double *)(param_2 + 0x69)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x69)" (( "(") (binary_expression "param_2 + 0x69" (identifier "param_2") (+ "+") (number_literal "0x69")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(double *)(param_2 + 0x69) <= 0.0)" (( "(") (binary_expression "*(double *)(param_2 + 0x69) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x69)" (* "*") (cast_expression "(double *)(param_2 + 0x69)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x69)" (( "(") (binary_expression "param_2 + 0x69" (identifier "param_2") (+ "+") (number_literal "0x69")) () ")")))) (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            param_2[0x69] = 0;\n            param_2[0x6a] = 0;\n          }" ({ "{") (expression_statement "param_2[0x69] = 0;" (assignment_expression "param_2[0x69] = 0" (subscript_expression "param_2[0x69]" (identifier "param_2") ([ "[") (number_literal "0x69") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x6a] = 0;" (assignment_expression "param_2[0x6a] = 0" (subscript_expression "param_2[0x6a]" (identifier "param_2") ([ "[") (number_literal "0x6a") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }" (if "if") (parenthesized_expression "((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0))" (( "(") (binary_expression "(1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)" (parenthesized_expression "(1.0 < *(double *)(param_2 + 0x6b))" (( "(") (binary_expression "1.0 < *(double *)(param_2 + 0x6b)" (number_literal "1.0") (< "<") (pointer_expression "*(double *)(param_2 + 0x6b)" (* "*") (cast_expression "(double *)(param_2 + 0x6b)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6b)" (( "(") (binary_expression "param_2 + 0x6b" (identifier "param_2") (+ "+") (number_literal "0x6b")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(double *)(param_2 + 0x6b) <= 0.0)" (( "(") (binary_expression "*(double *)(param_2 + 0x6b) <= 0.0" (pointer_expression "*(double *)(param_2 + 0x6b)" (* "*") (cast_expression "(double *)(param_2 + 0x6b)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6b)" (( "(") (binary_expression "param_2 + 0x6b" (identifier "param_2") (+ "+") (number_literal "0x6b")) () ")")))) (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            param_2[0x6b] = 0;\n            param_2[0x6c] = 0;\n          }" ({ "{") (expression_statement "param_2[0x6b] = 0;" (assignment_expression "param_2[0x6b] = 0" (subscript_expression "param_2[0x6b]" (identifier "param_2") ([ "[") (number_literal "0x6b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x6c] = 0;" (assignment_expression "param_2[0x6c] = 0" (subscript_expression "param_2[0x6c]" (identifier "param_2") ([ "[") (number_literal "0x6c") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((1.0 < local_38) || (local_38 <= 0.0)) {\n            local_38 = 0.0;\n          }" (if "if") (parenthesized_expression "((1.0 < local_38) || (local_38 <= 0.0))" (( "(") (binary_expression "(1.0 < local_38) || (local_38 <= 0.0)" (parenthesized_expression "(1.0 < local_38)" (( "(") (binary_expression "1.0 < local_38" (number_literal "1.0") (< "<") (identifier "local_38")) () ")")) (|| "||") (parenthesized_expression "(local_38 <= 0.0)" (( "(") (binary_expression "local_38 <= 0.0" (identifier "local_38") (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            local_38 = 0.0;\n          }" ({ "{") (expression_statement "local_38 = 0.0;" (assignment_expression "local_38 = 0.0" (identifier "local_38") (= "=") (number_literal "0.0")) (; ";")) (} "}"))) (expression_statement "dVar47 = local_38;" (assignment_expression "dVar47 = local_38" (identifier "dVar47") (= "=") (identifier "local_38")) (; ";")) (if_statement "if ((1.0 < local_30) || (local_30 <= 0.0)) {\n            local_30 = 0.0;\n          }" (if "if") (parenthesized_expression "((1.0 < local_30) || (local_30 <= 0.0))" (( "(") (binary_expression "(1.0 < local_30) || (local_30 <= 0.0)" (parenthesized_expression "(1.0 < local_30)" (( "(") (binary_expression "1.0 < local_30" (number_literal "1.0") (< "<") (identifier "local_30")) () ")")) (|| "||") (parenthesized_expression "(local_30 <= 0.0)" (( "(") (binary_expression "local_30 <= 0.0" (identifier "local_30") (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            local_30 = 0.0;\n          }" ({ "{") (expression_statement "local_30 = 0.0;" (assignment_expression "local_30 = 0.0" (identifier "local_30") (= "=") (number_literal "0.0")) (; ";")) (} "}"))) (expression_statement "dVar2 = local_30;" (assignment_expression "dVar2 = local_30" (identifier "dVar2") (= "=") (identifier "local_30")) (; ";")) (if_statement "if ((1.0 < local_28) || (local_28 <= 0.0)) {\n            local_28 = 0.0;\n          }" (if "if") (parenthesized_expression "((1.0 < local_28) || (local_28 <= 0.0))" (( "(") (binary_expression "(1.0 < local_28) || (local_28 <= 0.0)" (parenthesized_expression "(1.0 < local_28)" (( "(") (binary_expression "1.0 < local_28" (number_literal "1.0") (< "<") (identifier "local_28")) () ")")) (|| "||") (parenthesized_expression "(local_28 <= 0.0)" (( "(") (binary_expression "local_28 <= 0.0" (identifier "local_28") (<= "<=") (number_literal "0.0")) () ")"))) () ")")) (compound_statement "{\n            local_28 = 0.0;\n          }" ({ "{") (expression_statement "local_28 = 0.0;" (assignment_expression "local_28 = 0.0" (identifier "local_28") (= "=") (number_literal "0.0")) (; ";")) (} "}"))) (expression_statement "dVar9 = local_28;" (assignment_expression "dVar9 = local_28" (identifier "dVar9") (= "=") (identifier "local_28")) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "dVar1 = (double)DAT_002cc820;" (assignment_expression "dVar1 = (double)DAT_002cc820" (identifier "dVar1") (= "=") (cast_expression "(double)DAT_002cc820" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002cc820"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" (identifier "ROUND") (argument_list "((float)*(double *)(param_2 + 0x5f) * DAT_002cc820)" (( "(") (binary_expression "(float)*(double *)(param_2 + 0x5f) * DAT_002cc820" (cast_expression "(float)*(double *)(param_2 + 0x5f)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(double *)(param_2 + 0x5f)" (* "*") (cast_expression "(double *)(param_2 + 0x5f)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5f)" (( "(") (binary_expression "param_2 + 0x5f" (identifier "param_2") (+ "+") (number_literal "0x5f")) () ")"))))) (* "*") (identifier "DAT_002cc820")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" (identifier "ROUND") (argument_list "((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1)" (( "(") (binary_expression "(1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))\n                                 * dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))" (( "(") (binary_expression "1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f))" (number_literal "1.0") (- "-") (parenthesized_expression "(*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f))" (( "(") (binary_expression "*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)" (pointer_expression "*(double *)(param_2 + 0x5d)" (* "*") (cast_expression "(double *)(param_2 + 0x5d)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5d)" (( "(") (binary_expression "param_2 + 0x5d" (identifier "param_2") (+ "+") (number_literal "0x5d")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_2 + 0x5f)" (* "*") (cast_expression "(double *)(param_2 + 0x5f)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5f)" (( "(") (binary_expression "param_2 + 0x5f" (identifier "param_2") (+ "+") (number_literal "0x5f")) () ")"))))) () ")"))) () ")")) (* "*") (identifier "dVar1")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 99))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar1 * *(double *)(param_2 + 99))" (identifier "ROUND") (argument_list "(dVar1 * *(double *)(param_2 + 99))" (( "(") (binary_expression "dVar1 * *(double *)(param_2 + 99)" (identifier "dVar1") (* "*") (pointer_expression "*(double *)(param_2 + 99)" (* "*") (cast_expression "(double *)(param_2 + 99)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 99)" (( "(") (binary_expression "param_2 + 99" (identifier "param_2") (+ "+") (number_literal "99")) () ")"))))) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x65))" (identifier "ROUND") (argument_list "(dVar1 * *(double *)(param_2 + 0x65))" (( "(") (binary_expression "dVar1 * *(double *)(param_2 + 0x65)" (identifier "dVar1") (* "*") (pointer_expression "*(double *)(param_2 + 0x65)" (* "*") (cast_expression "(double *)(param_2 + 0x65)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x65)" (( "(") (binary_expression "param_2 + 0x65" (identifier "param_2") (+ "+") (number_literal "0x65")) () ")"))))) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" (identifier "ROUND") (argument_list "((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1)" (( "(") (binary_expression "(1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *\n                                 dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65)))" (( "(") (binary_expression "1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))" (number_literal "1.0") (- "-") (parenthesized_expression "(*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))" (( "(") (binary_expression "*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65)" (pointer_expression "*(double *)(param_2 + 99)" (* "*") (cast_expression "(double *)(param_2 + 99)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 99)" (( "(") (binary_expression "param_2 + 99" (identifier "param_2") (+ "+") (number_literal "99")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_2 + 0x65)" (* "*") (cast_expression "(double *)(param_2 + 0x65)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x65)" (( "(") (binary_expression "param_2 + 0x65" (identifier "param_2") (+ "+") (number_literal "0x65")) () ")"))))) () ")"))) () ")")) (* "*") (identifier "dVar1")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x69))" (identifier "ROUND") (argument_list "(dVar1 * *(double *)(param_2 + 0x69))" (( "(") (binary_expression "dVar1 * *(double *)(param_2 + 0x69)" (identifier "dVar1") (* "*") (pointer_expression "*(double *)(param_2 + 0x69)" (* "*") (cast_expression "(double *)(param_2 + 0x69)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x69)" (( "(") (binary_expression "param_2 + 0x69" (identifier "param_2") (+ "+") (number_literal "0x69")) () ")"))))) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar1 * *(double *)(param_2 + 0x6b))" (identifier "ROUND") (argument_list "(dVar1 * *(double *)(param_2 + 0x6b))" (( "(") (binary_expression "dVar1 * *(double *)(param_2 + 0x6b)" (identifier "dVar1") (* "*") (pointer_expression "*(double *)(param_2 + 0x6b)" (* "*") (cast_expression "(double *)(param_2 + 0x6b)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6b)" (( "(") (binary_expression "param_2 + 0x6b" (identifier "param_2") (+ "+") (number_literal "0x6b")) () ")"))))) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)\n                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" (identifier "ROUND") (argument_list "((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1)" (( "(") (binary_expression "(1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))\n                                 * dVar1" (parenthesized_expression "(1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))" (( "(") (binary_expression "1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b))" (number_literal "1.0") (- "-") (parenthesized_expression "(*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b))" (( "(") (binary_expression "*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)" (pointer_expression "*(double *)(param_2 + 0x69)" (* "*") (cast_expression "(double *)(param_2 + 0x69)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x69)" (( "(") (binary_expression "param_2 + 0x69" (identifier "param_2") (+ "+") (number_literal "0x69")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_2 + 0x6b)" (* "*") (cast_expression "(double *)(param_2 + 0x6b)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6b)" (( "(") (binary_expression "param_2 + 0x6b" (identifier "param_2") (+ "+") (number_literal "0x6b")) () ")"))))) () ")"))) () ")")) (* "*") (identifier "dVar1")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "dVar1 = (double)DAT_002b2420;" (assignment_expression "dVar1 = (double)DAT_002b2420" (identifier "dVar1") (= "=") (cast_expression "(double)DAT_002b2420" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002b2420"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);" (assignment_expression "local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND((float)dVar47 * DAT_002b2420)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND((float)dVar47 * DAT_002b2420)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND((float)dVar47 * DAT_002b2420)" (identifier "ROUND") (argument_list "((float)dVar47 * DAT_002b2420)" (( "(") (binary_expression "(float)dVar47 * DAT_002b2420" (cast_expression "(float)dVar47" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar47")) (* "*") (identifier "DAT_002b2420")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar2 * dVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar2 * dVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar2 * dVar1)" (identifier "ROUND") (argument_list "(dVar2 * dVar1)" (( "(") (binary_expression "dVar2 * dVar1" (identifier "dVar2") (* "*") (identifier "dVar1")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (expression_statement "local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);" (assignment_expression "local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1)" (identifier "local_e4") (= "=") (cast_expression "(uint)(longlong)ROUND(dVar9 * dVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(longlong)ROUND(dVar9 * dVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar9 * dVar1)" (identifier "ROUND") (argument_list "(dVar9 * dVar1)" (( "(") (binary_expression "dVar9 * dVar1" (identifier "dVar9") (* "*") (identifier "dVar1")) () ")")))))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_e4);" (call_expression "WriteBlobLSBLong(param_2,local_e4)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_e4)" (( "(") (identifier "param_2") (, ",") (identifier "local_e4") () ")"))) (; ";")) (if_statement "if ((param_2[0x75] != 0) || (bVar41)) {\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }" (if "if") (parenthesized_expression "((param_2[0x75] != 0) || (bVar41))" (( "(") (binary_expression "(param_2[0x75] != 0) || (bVar41)" (parenthesized_expression "(param_2[0x75] != 0)" (( "(") (binary_expression "param_2[0x75] != 0" (subscript_expression "param_2[0x75]" (identifier "param_2") ([ "[") (number_literal "0x75") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar41)" (( "(") (identifier "bVar41") () ")"))) () ")")) (compound_statement "{\n            uVar16 = param_2[0x75] - 1;\n            uVar45 = 0;\n            if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }\n            WriteBlobLSBLong(param_2,uVar45);\n            WriteBlobLSBLong(param_2,local_164);\n            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );\n            WriteBlobLSBLong(param_2,0);\n          }" ({ "{") (expression_statement "uVar16 = param_2[0x75] - 1;" (assignment_expression "uVar16 = param_2[0x75] - 1" (identifier "uVar16") (= "=") (binary_expression "param_2[0x75] - 1" (subscript_expression "param_2[0x75]" (identifier "param_2") ([ "[") (number_literal "0x75") (] "]")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar45 = 0;" (assignment_expression "uVar45 = 0" (identifier "uVar45") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar16 < 4) {\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }" (if "if") (parenthesized_expression "(uVar16 < 4)" (( "(") (binary_expression "uVar16 < 4" (identifier "uVar16") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);\n            }" ({ "{") (expression_statement "uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);" (assignment_expression "uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" (identifier "uVar45") (= "=") (pointer_expression "*(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" (* "*") (cast_expression "(undefined4 *)(&DAT_002cc784 + uVar16 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002cc784 + uVar16 * 4)" (( "(") (binary_expression "&DAT_002cc784 + uVar16 * 4" (pointer_expression "&DAT_002cc784" (& "&") (identifier "DAT_002cc784")) (+ "+") (binary_expression "uVar16 * 4" (identifier "uVar16") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "WriteBlobLSBLong(param_2,uVar45);" (call_expression "WriteBlobLSBLong(param_2,uVar45)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,uVar45)" (( "(") (identifier "param_2") (, ",") (identifier "uVar45") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,local_164);" (call_expression "WriteBlobLSBLong(param_2,local_164)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,local_164)" (( "(") (identifier "param_2") (, ",") (identifier "local_164") () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            );" (call_expression "WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            )" (identifier "WriteBlobLSBLong") (argument_list "(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174\n                            )" (( "(") (identifier "param_2") (, ",") (binary_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174" (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")"))) (+ "+") (identifier "local_174")) () ")"))) (; ";")) (expression_statement "WriteBlobLSBLong(param_2,0);" (call_expression "WriteBlobLSBLong(param_2,0)" (identifier "WriteBlobLSBLong") (argument_list "(param_2,0)" (( "(") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar18 = *param_2;" (assignment_expression "iVar18 = *param_2" (identifier "iVar18") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" (identifier "iVar14") (= "=") (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]"))) (; ";")) (} "}")))) (if_statement "if (iVar18 == 2) {\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }" (if "if") (parenthesized_expression "(iVar18 == 2)" (( "(") (binary_expression "iVar18 == 2" (identifier "iVar18") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }\n        bVar25 = (byte)local_ae;\n        iVar14 = 1 << (bVar25 & 0x1f);\n        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);\n        if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }\n        uVar16 = local_9c;\n        if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }\n        puVar23 = puVar21;\n        if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }\n        if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }\nLAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }\n        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));\n        RelinquishMagickMemory(puVar21);\n        iVar14 = param_2[0xcca];\n      }" ({ "{") (if_statement "if (iVar14 != 0) {\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_184 = (ulonglong)(uint)param_2[9];\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);\n        }" ({ "{") (expression_statement "local_184 = (ulonglong)(uint)param_2[9];" (assignment_expression "local_184 = (ulonglong)(uint)param_2[9]" (identifier "local_184") (= "=") (cast_expression "(ulonglong)(uint)param_2[9]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(uint)param_2[9]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))))) (; ";")) (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",\n                         (double)local_184)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x976") (, ",") (string_literal ""  Colormap: %.20g entries"" (" """) (string_content "  Colormap: %.20g entries") (" """)) (, ",") (cast_expression "(double)local_184" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "local_184")) () ")"))) (; ";")) (} "}"))) (expression_statement "bVar25 = (byte)local_ae;" (assignment_expression "bVar25 = (byte)local_ae" (identifier "bVar25") (= "=") (cast_expression "(byte)local_ae" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_ae"))) (; ";")) (expression_statement "iVar14 = 1 << (bVar25 & 0x1f);" (assignment_expression "iVar14 = 1 << (bVar25 & 0x1f)" (identifier "iVar14") (= "=") (binary_expression "1 << (bVar25 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(bVar25 & 0x1f)" (( "(") (binary_expression "bVar25 & 0x1f" (identifier "bVar25") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);" (assignment_expression "puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4)" (identifier "puVar21") (= "=") (cast_expression "(undefined2 *)AcquireQuantumMemory(iVar14,4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "AcquireQuantumMemory(iVar14,4)" (identifier "AcquireQuantumMemory") (argument_list "(iVar14,4)" (( "(") (identifier "iVar14") (, ",") (number_literal "4") () ")"))))) (; ";")) (if_statement "if (puVar21 == (undefined2 *)0x0) {\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }" (if "if") (parenthesized_expression "(puVar21 == (undefined2 *)0x0)" (( "(") (binary_expression "puVar21 == (undefined2 *)0x0" (identifier "puVar21") (== "==") (cast_expression "(undefined2 *)0x0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          RelinquishVirtualMemory(local_124);\n          ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);\n          piVar5 = (int *)param_1[3];\n          while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }\nLAB_001d3a2a:\n          CloseBlob(piVar35);\n          iVar13 = 0;\n          goto LAB_001d3a3a;\n        }" ({ "{") (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" (identifier "RelinquishVirtualMemory") (argument_list "(local_124)" (( "(") (identifier "local_124") () ")"))) (; ";")) (expression_statement "ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6);" (call_expression "ThrowMagickException\n                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6)" (identifier "ThrowMagickException") (argument_list "(param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",\n                     "`%s\'",param_2 + 0xc6)" (( "(") (identifier "param_3") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x97d") (, ",") (number_literal "400") (, ",") (string_literal ""MemoryAllocationFailed"" (" """) (string_content "MemoryAllocationFailed") (" """)) (, ",") (string_literal ""`%s\'"" (" """) (string_content "`%s") (escape_sequence "\'") (" """)) (, ",") (binary_expression "param_2 + 0xc6" (identifier "param_2") (+ "+") (number_literal "0xc6")) () ")"))) (; ";")) (expression_statement "piVar5 = (int *)param_1[3];" (assignment_expression "piVar5 = (int *)param_1[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (while_statement "while (piVar8 = param_2, piVar5 != (int *)0x0) {\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }" (while "while") (parenthesized_expression "(piVar8 = param_2, piVar5 != (int *)0x0)" (( "(") (comma_expression "piVar8 = param_2, piVar5 != (int *)0x0" (assignment_expression "piVar8 = param_2" (identifier "piVar8") (= "=") (identifier "param_2")) (, ",") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n            piVar5 = (int *)piVar8[0xccf];\n            param_2 = piVar5;\n            piVar35 = piVar8;\n          }" ({ "{") (expression_statement "piVar5 = (int *)piVar8[0xccf];" (assignment_expression "piVar5 = (int *)piVar8[0xccf]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar8[0xccf]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[0xccf]" (identifier "piVar8") ([ "[") (number_literal "0xccf") (] "]")))) (; ";")) (expression_statement "param_2 = piVar5;" (assignment_expression "param_2 = piVar5" (identifier "param_2") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar35 = piVar8;" (assignment_expression "piVar35 = piVar8" (identifier "piVar35") (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (labeled_statement "LAB_001d3a2a:\n          CloseBlob(piVar35);" (statement_identifier "LAB_001d3a2a") (: ":") (expression_statement "CloseBlob(piVar35);" (call_expression "CloseBlob(piVar35)" (identifier "CloseBlob") (argument_list "(piVar35)" (( "(") (identifier "piVar35") () ")"))) (; ";"))) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_001d3a3a;" (goto "goto") (statement_identifier "LAB_001d3a3a") (; ";")) (} "}"))) (expression_statement "uVar16 = local_9c;" (assignment_expression "uVar16 = local_9c" (identifier "uVar16") (= "=") (identifier "local_9c")) (; ";")) (if_statement "if (param_2[9] <= (int)local_9c) {\n          uVar16 = param_2[9];\n        }" (if "if") (parenthesized_expression "(param_2[9] <= (int)local_9c)" (( "(") (binary_expression "param_2[9] <= (int)local_9c" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (<= "<=") (cast_expression "(int)local_9c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_9c"))) () ")")) (compound_statement "{\n          uVar16 = param_2[9];\n        }" ({ "{") (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" (identifier "uVar16") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}"))) (expression_statement "puVar23 = puVar21;" (assignment_expression "puVar23 = puVar21" (identifier "puVar23") (= "=") (identifier "puVar21")) (; ";")) (if_statement "if ((int)uVar16 < 1) {\n          iVar18 = 0;\n        }\n        else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" (if "if") (parenthesized_expression "((int)uVar16 < 1)" (( "(") (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          iVar18 = 0;\n        }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" (else "else") (compound_statement "{\n          iVar28 = 0;\n          iVar18 = 0;\n          do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);\n        }" ({ "{") (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" (identifier "iVar28") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          } while (iVar18 < (int)uVar16);" (do "do") (compound_statement "{\n            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)puVar23 = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)((int)puVar23 + 1) = uVar31;\n            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);\n            uVar31 = 0;\n            if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }\n            *(undefined1 *)(puVar23 + 1) = uVar31;\n            if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }\n            iVar18 = iVar18 + 1;\n            iVar28 = iVar28 + 0x50;\n            uVar16 = local_9c;\n            if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }\n          }" ({ "{") (expression_statement "dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x30 + iVar28)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(param_2[10] + 0x30 + iVar28)" (* "*") (cast_expression "(double *)(param_2[10] + 0x30 + iVar28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[10] + 0x30 + iVar28)" (( "(") (binary_expression "param_2[10] + 0x30 + iVar28" (binary_expression "param_2[10] + 0x30" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "0x30")) (+ "+") (identifier "iVar28")) () ")"))))) (; ";")) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" (identifier "uVar31") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" ({ "{") (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "uVar31") (= "=") (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined1 *)puVar23 = uVar31;" (assignment_expression "*(undefined1 *)puVar23 = uVar31" (pointer_expression "*(undefined1 *)puVar23" (* "*") (cast_expression "(undefined1 *)puVar23" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar23"))) (= "=") (identifier "uVar31")) (; ";")) (expression_statement "dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x28 + iVar28)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(param_2[10] + 0x28 + iVar28)" (* "*") (cast_expression "(double *)(param_2[10] + 0x28 + iVar28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[10] + 0x28 + iVar28)" (( "(") (binary_expression "param_2[10] + 0x28 + iVar28" (binary_expression "param_2[10] + 0x28" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "0x28")) (+ "+") (identifier "iVar28")) () ")"))))) (; ";")) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" (identifier "uVar31") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" ({ "{") (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "uVar31") (= "=") (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined1 *)((int)puVar23 + 1) = uVar31;" (assignment_expression "*(undefined1 *)((int)puVar23 + 1) = uVar31" (pointer_expression "*(undefined1 *)((int)puVar23 + 1)" (* "*") (cast_expression "(undefined1 *)((int)puVar23 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 1)" (( "(") (binary_expression "(int)puVar23 + 1" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar31")) (; ";")) (expression_statement "dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);" (assignment_expression "dVar47 = *(double *)(param_2[10] + 0x20 + iVar28)" (identifier "dVar47") (= "=") (pointer_expression "*(double *)(param_2[10] + 0x20 + iVar28)" (* "*") (cast_expression "(double *)(param_2[10] + 0x20 + iVar28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[10] + 0x20 + iVar28)" (( "(") (binary_expression "param_2[10] + 0x20 + iVar28" (binary_expression "param_2[10] + 0x20" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "0x20")) (+ "+") (identifier "iVar28")) () ")"))))) (; ";")) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0.0 < dVar47) {\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" (if "if") (parenthesized_expression "(0.0 < dVar47)" (( "(") (binary_expression "0.0 < dVar47" (number_literal "0.0") (< "<") (identifier "dVar47")) () ")")) (compound_statement "{\n              dVar47 = dVar47 / (double)DAT_002a7ff0;\n              uVar31 = 0xff;\n              if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }\n            }" ({ "{") (expression_statement "dVar47 = dVar47 / (double)DAT_002a7ff0;" (assignment_expression "dVar47 = dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (= "=") (binary_expression "dVar47 / (double)DAT_002a7ff0" (identifier "dVar47") (/ "/") (cast_expression "(double)DAT_002a7ff0" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff0")))) (; ";")) (expression_statement "uVar31 = 0xff;" (assignment_expression "uVar31 = 0xff" (identifier "uVar31") (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (dVar47 < (double)DAT_002a7ff4) {\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" (if "if") (parenthesized_expression "(dVar47 < (double)DAT_002a7ff4)" (( "(") (binary_expression "dVar47 < (double)DAT_002a7ff4" (identifier "dVar47") (< "<") (cast_expression "(double)DAT_002a7ff4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002a7ff4"))) () ")")) (compound_statement "{\n                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);\n              }" ({ "{") (expression_statement "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);" (assignment_expression "uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" (identifier "uVar31") (= "=") (cast_expression "(undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (cast_expression "(short)ROUND(dVar47 + (double)DAT_0029f124)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (call_expression "ROUND(dVar47 + (double)DAT_0029f124)" (identifier "ROUND") (argument_list "(dVar47 + (double)DAT_0029f124)" (( "(") (binary_expression "dVar47 + (double)DAT_0029f124" (identifier "dVar47") (+ "+") (cast_expression "(double)DAT_0029f124" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f124"))) () ")")))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined1 *)(puVar23 + 1) = uVar31;" (assignment_expression "*(undefined1 *)(puVar23 + 1) = uVar31" (pointer_expression "*(undefined1 *)(puVar23 + 1)" (* "*") (cast_expression "(undefined1 *)(puVar23 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar23 + 1)" (( "(") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar31")) (; ";")) (if_statement "if (bVar29) {\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }\n            else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" (if "if") (parenthesized_expression "(bVar29)" (( "(") (identifier "bVar29") () ")")) (compound_statement "{\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n            }" ({ "{") (expression_statement "*(undefined1 *)((int)puVar23 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar23 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar23 + 3)" (* "*") (cast_expression "(undefined1 *)((int)puVar23 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 3)" (( "(") (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" (identifier "puVar23") (= "=") (binary_expression "puVar23 + 2" (identifier "puVar23") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" (else "else") (compound_statement "{\n              puVar23 = (undefined2 *)((int)puVar23 + 3);\n            }" ({ "{") (expression_statement "puVar23 = (undefined2 *)((int)puVar23 + 3);" (assignment_expression "puVar23 = (undefined2 *)((int)puVar23 + 3)" (identifier "puVar23") (= "=") (cast_expression "(undefined2 *)((int)puVar23 + 3)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 3)" (( "(") (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "3")) () ")")))) (; ";")) (} "}")))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar28 = iVar28 + 0x50;" (assignment_expression "iVar28 = iVar28 + 0x50" (identifier "iVar28") (= "=") (binary_expression "iVar28 + 0x50" (identifier "iVar28") (+ "+") (number_literal "0x50"))) (; ";")) (expression_statement "uVar16 = local_9c;" (assignment_expression "uVar16 = local_9c" (identifier "uVar16") (= "=") (identifier "local_9c")) (; ";")) (if_statement "if (param_2[9] <= (int)local_9c) {\n              uVar16 = param_2[9];\n            }" (if "if") (parenthesized_expression "(param_2[9] <= (int)local_9c)" (( "(") (binary_expression "param_2[9] <= (int)local_9c" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (<= "<=") (cast_expression "(int)local_9c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_9c"))) () ")")) (compound_statement "{\n              uVar16 = param_2[9];\n            }" ({ "{") (expression_statement "uVar16 = param_2[9];" (assignment_expression "uVar16 = param_2[9]" (identifier "uVar16") (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(iVar18 < (int)uVar16)" (( "(") (binary_expression "iVar18 < (int)uVar16" (identifier "iVar18") (< "<") (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16"))) () ")")) (; ";")) (} "}")))) (if_statement "if (iVar18 < iVar14) {\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }" (if "if") (parenthesized_expression "(iVar18 < iVar14)" (( "(") (binary_expression "iVar18 < iVar14" (identifier "iVar18") (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n          do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);\n        }" ({ "{") (do_statement "do {\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          } while (iVar18 != iVar14);" (do "do") (compound_statement "{\n            while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }\n            iVar18 = iVar18 + 1;\n            puVar23 = (undefined2 *)((int)puVar23 + 3);\n          }" ({ "{") (while_statement "while( true ) {\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              *(undefined1 *)(puVar23 + 1) = 0;\n              *puVar23 = 0;\n              if (!bVar29) break;\n              iVar18 = iVar18 + 1;\n              *(undefined1 *)((int)puVar23 + 3) = 0;\n              puVar23 = puVar23 + 2;\n              if (iVar18 == iVar14) goto LAB_001d3985;\n            }" ({ "{") (expression_statement "*(undefined1 *)(puVar23 + 1) = 0;" (assignment_expression "*(undefined1 *)(puVar23 + 1) = 0" (pointer_expression "*(undefined1 *)(puVar23 + 1)" (* "*") (cast_expression "(undefined1 *)(puVar23 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar23 + 1)" (( "(") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (!bVar29) break;" (if "if") (parenthesized_expression "(!bVar29)" (( "(") (unary_expression "!bVar29" (! "!") (identifier "bVar29")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar23 + 3) = 0;" (assignment_expression "*(undefined1 *)((int)puVar23 + 3) = 0" (pointer_expression "*(undefined1 *)((int)puVar23 + 3)" (* "*") (cast_expression "(undefined1 *)((int)puVar23 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 3)" (( "(") (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" (identifier "puVar23") (= "=") (binary_expression "puVar23 + 2" (identifier "puVar23") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (iVar18 == iVar14) goto LAB_001d3985;" (if "if") (parenthesized_expression "(iVar18 == iVar14)" (( "(") (binary_expression "iVar18 == iVar14" (identifier "iVar18") (== "==") (identifier "iVar14")) () ")")) (goto_statement "goto LAB_001d3985;" (goto "goto") (statement_identifier "LAB_001d3985") (; ";"))) (} "}"))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar23 = (undefined2 *)((int)puVar23 + 3);" (assignment_expression "puVar23 = (undefined2 *)((int)puVar23 + 3)" (identifier "puVar23") (= "=") (cast_expression "(undefined2 *)((int)puVar23 + 3)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + 3)" (( "(") (binary_expression "(int)puVar23 + 3" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "3")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != iVar14)" (( "(") (binary_expression "iVar18 != iVar14" (identifier "iVar18") (!= "!=") (identifier "iVar14")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001d3985:\n        if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }" (statement_identifier "LAB_001d3985") (: ":") (if_statement "if (bVar11 == 2) {\n          iVar14 = 3;\n        }\n        else {\n          iVar14 = 4;\n        }" (if "if") (parenthesized_expression "(bVar11 == 2)" (( "(") (binary_expression "bVar11 == 2" (identifier "bVar11") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          iVar14 = 3;\n        }" ({ "{") (expression_statement "iVar14 = 3;" (assignment_expression "iVar14 = 3" (identifier "iVar14") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n          iVar14 = 4;\n        }" (else "else") (compound_statement "{\n          iVar14 = 4;\n        }" ({ "{") (expression_statement "iVar14 = 4;" (assignment_expression "iVar14 = 4" (identifier "iVar14") (= "=") (number_literal "4")) (; ";")) (} "}"))))) (expression_statement "WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));" (call_expression "WriteBlob(param_2,iVar14 << (bVar25 & 0x1f))" (identifier "WriteBlob") (argument_list "(param_2,iVar14 << (bVar25 & 0x1f))" (( "(") (identifier "param_2") (, ",") (binary_expression "iVar14 << (bVar25 & 0x1f)" (identifier "iVar14") (<< "<<") (parenthesized_expression "(bVar25 & 0x1f)" (( "(") (binary_expression "bVar25 & 0x1f" (identifier "bVar25") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (; ";")) (expression_statement "RelinquishMagickMemory(puVar21);" (call_expression "RelinquishMagickMemory(puVar21)" (identifier "RelinquishMagickMemory") (argument_list "(puVar21)" (( "(") (identifier "puVar21") () ")"))) (; ";")) (expression_statement "iVar14 = param_2[0xcca];" (assignment_expression "iVar14 = param_2[0xcca]" (identifier "iVar14") (= "=") (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]"))) (; ";")) (} "}"))) (expression_statement "sVar37 = local_a8;" (assignment_expression "sVar37 = local_a8" (identifier "sVar37") (= "=") (identifier "local_a8")) (; ";")) (if_statement "if (iVar14 != 0) {\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);\n      }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x999") (, ",") (string_literal ""  Pixels:  %u bytes"" (" """) (string_content "  Pixels:  %u bytes") (" """)) (, ",") (identifier "local_a8") () ")"))) (; ";")) (} "}"))) (expression_statement "WriteBlob(param_2,sVar37);" (call_expression "WriteBlob(param_2,sVar37)" (identifier "WriteBlob") (argument_list "(param_2,sVar37)" (( "(") (identifier "param_2") (, ",") (identifier "sVar37") () ")"))) (; ";")) (if_statement "if (iVar13 != 0) {\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }\n        GetStringInfoDatum(iVar13);\n        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));\n        if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }\n      }" ({ "{") (if_statement "if (param_2[0xcca] != 0) {\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }" (if "if") (parenthesized_expression "(param_2[0xcca] != 0)" (( "(") (binary_expression "param_2[0xcca] != 0" (subscript_expression "param_2[0xcca]" (identifier "param_2") ([ "[") (number_literal "0xcca") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);\n        }" ({ "{") (expression_statement "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174);" (call_expression "LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174)" (identifier "LogMagickEvent") (argument_list "(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",\n                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174)" (( "(") (number_literal "0x10") (, ",") (string_literal ""coders/bmp.c"" (" """) (string_content "coders/bmp.c") (" """)) (, ",") (string_literal ""WriteBMPImage"" (" """) (string_content "WriteBMPImage") (" """)) (, ",") (number_literal "0x99f") (, ",") (string_literal ""  Profile:  %g bytes"" (" """) (string_content "  Profile:  %g bytes") (" """)) (, ",") (binary_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +\n                         (double)(short)local_174" (cast_expression "(double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")")))) (+ "+") (cast_expression "(double)(short)local_174" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(short)local_174" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_174")))) () ")"))) (; ";")) (} "}"))) (expression_statement "GetStringInfoDatum(iVar13);" (call_expression "GetStringInfoDatum(iVar13)" (identifier "GetStringInfoDatum") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));" (call_expression "WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)))" (identifier "WriteBlob") (argument_list "(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)))" (( "(") (identifier "param_2") (, ",") (call_expression "CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c))" (identifier "CONCAT22") (argument_list "(uStack_17a,CONCAT11(uStack_17b,local_17c))" (( "(") (identifier "uStack_17a") (, ",") (call_expression "CONCAT11(uStack_17b,local_17c)" (identifier "CONCAT11") (argument_list "(uStack_17b,local_17c)" (( "(") (identifier "uStack_17b") (, ",") (identifier "local_17c") () ")"))) () ")"))) () ")"))) (; ";")) (if_statement "if (local_170 != 0 || local_174 != 0) {\n          WriteBlob(param_2,local_174);\n        }" (if "if") (parenthesized_expression "(local_170 != 0 || local_174 != 0)" (( "(") (binary_expression "local_170 != 0 || local_174 != 0" (binary_expression "local_170 != 0" (identifier "local_170") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_174 != 0" (identifier "local_174") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          WriteBlob(param_2,local_174);\n        }" ({ "{") (expression_statement "WriteBlob(param_2,local_174);" (call_expression "WriteBlob(param_2,local_174)" (identifier "WriteBlob") (argument_list "(param_2,local_174)" (( "(") (identifier "param_2") (, ",") (identifier "local_174") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "RelinquishVirtualMemory(local_124);" (call_expression "RelinquishVirtualMemory(local_124)" (identifier "RelinquishVirtualMemory") (argument_list "(local_124)" (( "(") (identifier "local_124") () ")"))) (; ";")) (expression_statement "iVar13 = GetNextImageInList(param_2);" (assignment_expression "iVar13 = GetNextImageInList(param_2)" (identifier "iVar13") (= "=") (call_expression "GetNextImageInList(param_2)" (identifier "GetNextImageInList") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001d3caf:\n        CloseBlob(param_2);\n        iVar13 = 1;\n        goto LAB_001d3a3a;\n      }" ({ "{") (labeled_statement "LAB_001d3caf:\n        CloseBlob(param_2);" (statement_identifier "LAB_001d3caf") (: ":") (expression_statement "CloseBlob(param_2);" (call_expression "CloseBlob(param_2)" (identifier "CloseBlob") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_001d3a3a;" (goto "goto") (statement_identifier "LAB_001d3a3a") (; ";")) (} "}"))) (expression_statement "param_2 = (int *)SyncNextImageInList(param_2);" (assignment_expression "param_2 = (int *)SyncNextImageInList(param_2)" (identifier "param_2") (= "=") (cast_expression "(int *)SyncNextImageInList(param_2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "SyncNextImageInList(param_2)" (identifier "SyncNextImageInList") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (expression_statement "uVar17 = local_10c + 1;" (assignment_expression "uVar17 = local_10c + 1" (identifier "uVar17") (= "=") (binary_expression "local_10c + 1" (identifier "local_10c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar14 = local_108 + (uint)(0xfffffffe < local_10c);" (assignment_expression "iVar14 = local_108 + (uint)(0xfffffffe < local_10c)" (identifier "iVar14") (= "=") (binary_expression "local_108 + (uint)(0xfffffffe < local_10c)" (identifier "local_108") (+ "+") (call_expression "(uint)(0xfffffffe < local_10c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < local_10c)" (( "(") (binary_expression "0xfffffffe < local_10c" (number_literal "0xfffffffe") (< "<") (identifier "local_10c")) () ")"))))) (; ";")) (expression_statement "iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);" (assignment_expression "iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0)" (identifier "iVar13") (= "=") (call_expression "SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0)" (identifier "SetImageProgress") (argument_list "(param_2,"Save/Images",local_10c,local_108,uVar15,0)" (( "(") (identifier "param_2") (, ",") (string_literal ""Save/Images"" (" """) (string_content "Save/Images") (" """)) (, ",") (identifier "local_10c") (, ",") (identifier "local_108") (, ",") (identifier "uVar15") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;" (if "if") (parenthesized_expression "((iVar13 == 0) || (param_1[3] == 0))" (( "(") (binary_expression "(iVar13 == 0) || (param_1[3] == 0)" (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_1[3] == 0)" (( "(") (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_001d3caf;" (goto "goto") (statement_identifier "LAB_001d3caf") (; ";"))) (expression_statement "uVar16 = param_2[1] - 3;" (assignment_expression "uVar16 = param_2[1] - 3" (identifier "uVar16") (= "=") (binary_expression "param_2[1] - 3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "3"))) (; ";")) (expression_statement "local_10c = uVar17;" (assignment_expression "local_10c = uVar17" (identifier "local_10c") (= "=") (identifier "uVar17")) (; ";")) (expression_statement "local_108 = iVar14;" (assignment_expression "local_108 = iVar14" (identifier "local_108") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (0x1e < uVar16) break;" (if "if") (parenthesized_expression "(0x1e < uVar16)" (( "(") (binary_expression "0x1e < uVar16" (number_literal "0x1e") (< "<") (identifier "uVar16")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_001d1cae:" (statement_identifier "LAB_001d1cae") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(0x403c0001U >> (uVar16 & 0x1f) & 1) != 0" (parenthesized_expression "(0x403c0001U >> (uVar16 & 0x1f) & 1)" (( "(") (binary_expression "0x403c0001U >> (uVar16 & 0x1f) & 1" (binary_expression "0x403c0001U >> (uVar16 & 0x1f)" (number_literal "0x403c0001U") (>> ">>") (parenthesized_expression "(uVar16 & 0x1f)" (( "(") (binary_expression "uVar16 & 0x1f" (identifier "uVar16") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

type_1 function_1(type_2 *var_2,type_3 *var_4,type_4 *var_7)

{
  double var_76;
  double var_97;
  int var_10;
  size_t var_79;
  type_5 *pPVar5;
  type_6 *var_49;
  bool var_95;
  double var_75;
  type_7 value;
  type_3 *pIVar9;
  double var_99;
  type_8 bVar11;
  type_8 var_21;
  type_7 var_77;
  type_1 var_9;
  int var_13;
  char *var_15;
  size_t sVar17;
  type_9 var_18;
  type_10 var_22;
  type_9 var_24;
  type_9 var_39;
  type_11 *var_35;
  int var_38;
  type_12 *var_53;
  type_13 *data;
  type_3 *var_111;
  type_7 *var_74;
  type_9 uVar26;
  type_14 *var_70;
  int var_71;
  size_t var_45;
  type_15 *var_104;
  type_15 *var_106;
  char cVar30;
  type_8 var_102;
  type_7 var_78;
  bool bVar33;
  char *var_61;
  size_t var_40;
  type_16 uVar36;
  char *var_60;
  type_7 *var_80;
  type_7 *var_82;
  type_9 var_57;
  type_9 *var_20;
  size_t var_41;
  int var_72;
  int var_1;
  bool bVar43;
  bool var_37;
  bool var_68;
  type_8 bVar46;
  size_t var_55;
  type_15 uVar48;
  type_17 uVar49;
  type_18 local_184;
  type_8 var_27;
  type_16 uStack_17b;
  type_15 uStack_17a;
  int var_85;
  size_t var_88;
  int var_109;
  char *var_54;
  char *var_58;
  int var_67;
  type_9 var_64;
  int var_65;
  type_9 var_29;
  type_18 local_134;
  char *var_86;
  type_14 *var_47;
  type_9 var_113;
  int var_114;
  type_9 var_83;
  int var_84;
  type_9 var_66;
  type_19 bmp_info;
  
  bVar46 = 0;
  var_10 = *(int *)(var_1 + 0x14);
  if (var_2 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");
  }
  if (var_2->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_3("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,
                  "WriteBMPImage");
  }
  if (var_4 == (type_3 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");
  }
  if (var_4->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_3("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");
  }
  if (var_4->debug != var_5) {
    var_6(TraceEvent,"coders/bmp.c","WriteBMPImage",0x6a6,"%s",(short)var_4->filename);
  }
  if (var_7 == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");
  }
  if (var_7->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
    var_3("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"
                 );
  }
  var_9 = var_8(var_2,var_4,WriteBinaryBlobMode,var_7);
  if (var_9 == var_5) {
LAB_001d3a3a:
    if (var_10 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
      var_11();
    }
    return var_9;
  }
  var_13 = var_12(var_2->magick,"BMP2");
  var_21 = 2;
  if (var_13 != 0) {
    var_13 = var_12(var_2->magick,"BMP3");
    var_21 = (var_13 != 0) + 3;
  }
  var_15 = var_14(var_2,"bmp:format");
  if (var_15 != (char *)0x0) {
    var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",(short)var_15);
    var_13 = var_12(var_15,"bmp2");
    var_102 = 2;
    if (var_13 != 0) {
      var_102 = var_21;
    }
    var_13 = var_12(var_15,"bmp3");
    bVar11 = 3;
    if (var_13 != 0) {
      bVar11 = var_102;
    }
    var_13 = var_12(var_15,"bmp4");
    var_21 = 4;
    if (var_13 != 0) {
      var_21 = bVar11;
    }
  }
  sVar17 = var_16(var_4);
  var_113 = 0;
  var_114 = 0;
  var_18 = var_4->colorspace - var_17;
  if (var_18 < 0x1f) goto LAB_001d1cae;
  do {
    var_19(var_4,sRGBColorspace,var_7);
    do {
      var_20 = &bmp_info.ba_offset;
      for (var_13 = 0x29; var_13 != 0; var_13 = var_13 + -1) {
        *var_20 = 0;
        var_20 = var_20 + (type_9)bVar46 * -2 + 1;
      }
      if (var_21 == 2) {
        bmp_info.file_size = 0x1a;
        var_18 = 0x1a;
      }
      else {
        bmp_info.file_size = 0x36;
        var_18 = 0x36;
      }
      bmp_info.red_mask = 0xff0000;
      bmp_info.green_mask = 0xff00;
      bmp_info.blue_mask = 0xff;
      bmp_info.alpha_mask = 0xff000000;
      var_22 = var_4->storage_class;
      bmp_info.offset_bits = var_18;
      if (var_22 == var_23) {
        var_24 = var_4->colors;
        if (0x100 < var_24) {
          var_25(var_4,var_30,var_7);
          var_22 = var_4->storage_class;
          goto LAB_001d0f25;
        }
LAB_001d0f31:
        if (var_24 < 3) {
          bmp_info.bits_per_pixel = 1;
          if (var_2->compression == var_26) goto LAB_001d36c0;
LAB_001d0f54:
          var_27 = (type_8)bmp_info.bits_per_pixel;
          var_29 = 1 << (var_27 & 0x1f);
          uStack_17b = (type_16)(bmp_info.bits_per_pixel >> 8);
        }
        else {
          bmp_info.bits_per_pixel = (-(type_7)(var_24 < 0x11) & 0xfffc) + 8;
          if (var_2->compression != var_26) goto LAB_001d0f54;
LAB_001d36c0:
          var_29 = 0x100;
          bmp_info.bits_per_pixel = 8;
          var_27 = 8;
          uStack_17b = 0;
        }
        bmp_info.number_colors = var_29;
        if ((var_4->alpha_trait == var_28) && (var_24 <= var_29)) {
          bmp_info.file_size = var_18 + (3 << ((type_8)bmp_info.bits_per_pixel & 0x1f));
          bmp_info.offset_bits = bmp_info.file_size;
          var_18 = bmp_info.file_size;
          if (var_21 != 2) {
            bmp_info.file_size = bmp_info.file_size + var_29;
            bmp_info.offset_bits = bmp_info.file_size;
            var_18 = bmp_info.file_size;
          }
        }
        else {
          var_25(var_4,var_30,var_7);
          if (var_4->storage_class == var_30) goto LAB_001d3250;
        }
        var_24 = (type_9)var_31(uStack_17b,var_27);
        var_13 = 0;
      }
      else {
LAB_001d0f25:
        if (var_22 != var_30) {
          var_24 = var_4->colors;
          goto LAB_001d0f31;
        }
LAB_001d3250:
        bmp_info.number_colors = 0;
        var_15 = var_14(var_2,"bmp:subtype");
        if (var_15 == (char *)0x0) {
          if (var_21 == 4) {
            if (var_4->alpha_trait == var_28) goto LAB_001d3e67;
LAB_001d3d56:
            bmp_info.compression = 3;
            bmp_info.bits_per_pixel = 0x20;
            var_29 = 0;
            var_27 = 0x20;
            uStack_17b = 0;
            var_24 = 0x20;
            var_13 = 0;
            var_18 = bmp_info.file_size;
          }
          else {
LAB_001d3da8:
            var_18 = bmp_info.file_size;
            bmp_info.compression = 0;
            bmp_info.bits_per_pixel = 0x18;
            if ((var_21 == 3) && (var_4->alpha_trait != var_28)) {
              var_15 = var_14(var_2,"bmp3:alpha");
              var_9 = var_32(var_15);
              if (var_9 == var_5) {
                var_24 = 0x18;
                var_13 = 0;
                var_27 = 0x18;
                uStack_17b = 0;
                var_29 = 0;
              }
              else {
                var_29 = 0;
                var_24 = 0x20;
                bmp_info.bits_per_pixel = 0x20;
                var_27 = 0x20;
                uStack_17b = 0;
                var_13 = 0;
              }
            }
            else {
LAB_001d3e67:
              bmp_info.compression = 0;
              bmp_info.bits_per_pixel = 0x18;
              var_29 = 0;
              var_24 = 0x18;
              var_27 = 0x18;
              uStack_17b = 0;
              var_13 = 0;
              var_18 = bmp_info.file_size;
            }
          }
        }
        else {
          if (var_4->alpha_trait == var_28) {
            var_13 = var_33(var_15,"RGB555",6);
            if (var_13 == 0) {
              bmp_info.red_mask = 0x7c00;
              bmp_info.green_mask = 0x3e0;
              bmp_info.blue_mask = 0x1f;
              bmp_info.alpha_mask = 0;
              var_13 = 1;
            }
            else {
              var_13 = var_33(var_15,"RGB565",6);
              if (var_13 != 0) {
                if (var_21 == 4) goto LAB_001d3e67;
                goto LAB_001d3da8;
              }
              bmp_info.red_mask = 0xf800;
              bmp_info.green_mask = 0x7e0;
              bmp_info.blue_mask = 0x1f;
              bmp_info.alpha_mask = 0;
              var_13 = 2;
            }
          }
          else {
            var_13 = var_33(var_15,"ARGB4444",8);
            if (var_13 == 0) {
              bmp_info.red_mask = 0xf00;
              bmp_info.green_mask = 0xf0;
              bmp_info.blue_mask = 0xf;
              bmp_info.alpha_mask = 0xf000;
              var_13 = 3;
            }
            else {
              var_13 = var_33(var_15,"ARGB1555",8);
              if (var_13 != 0) {
                if (var_21 == 4) goto LAB_001d3d56;
                goto LAB_001d3da8;
              }
              bmp_info.red_mask = 0x7c00;
              bmp_info.green_mask = 0x3e0;
              bmp_info.blue_mask = 0x1f;
              bmp_info.alpha_mask = 0x8000;
              var_13 = 4;
            }
          }
          bmp_info.compression = 3;
          bmp_info.bits_per_pixel = 0x10;
          var_29 = 0;
          var_27 = 0x10;
          uStack_17b = 0;
          var_24 = 0x10;
          var_18 = bmp_info.file_size;
        }
      }
      bmp_info.ba_offset = 0;
      var_24 = var_24 * var_4->columns + 0x1f >> 5;
      var_39 = var_24 * 4;
      var_35 = var_34(var_4,"icc");
      bVar43 = var_35 != (type_11 *)0x0;
      var_95 = true;
      var_37 = var_4->rendering_intent == var_36;
      if (var_37 && !bVar43) {
        var_95 = var_4->gamma != 0.0;
      }
      if (var_21 == 2) {
        bmp_info.size = 0xc;
      }
      else if ((var_21 == 3) || (!var_95 && var_4->alpha_trait == var_28)) {
        bmp_info.size = 0x28;
        var_21 = 3;
      }
      else {
        if (var_37 && !bVar43) {
          bmp_info.size = 0x6c;
          var_38 = 0x44;
        }
        else {
          bmp_info.size = 0x7c;
          var_38 = 0x54;
        }
        var_18 = var_18 + var_38;
        var_21 = 4;
        bmp_info.offset_bits = bmp_info.offset_bits + var_38;
      }
      var_45 = var_4->columns;
      bmp_info.planes = 1;
      bmp_info.x_pixels = 0xb6d;
      var_40 = var_4->rows;
      bmp_info.y_pixels = 0xb6d;
      var_41 = var_39 * var_40;
      var_86 = (char *)(var_18 + var_41);
      if (var_4->units < var_42) {
        var_66 = (type_9)(type_20)
                         var_43(((float)(var_4->resolution).x * var_44) / (float)_DAT_002b7d50)
        ;
        bmp_info.x_pixels = var_66;
        var_66 = (type_9)(type_20)
                         var_43((var_44 * (float)(var_4->resolution).y) / (float)_DAT_002b7d50)
        ;
        bmp_info.y_pixels = var_66;
      }
      else if (var_4->units == var_42) {
        var_66 = (type_9)(type_20)var_43((float)(var_4->resolution).x * var_44);
        bmp_info.x_pixels = var_66;
        var_66 = (type_9)(type_20)var_43(var_44 * (float)(var_4->resolution).y);
        bmp_info.y_pixels = var_66;
      }
      var_57 = var_45 + 0x100;
      if (var_45 + 0x100 < var_39) {
        var_57 = var_39;
      }
      bmp_info.file_size = (type_9)var_86;
      bmp_info.width = var_45;
      bmp_info.height = var_40;
      bmp_info.image_size = var_41;
      bmp_info.colors_important = var_29;
      var_47 = var_46(var_40,var_57);
      var_111 = var_4;
      if (var_47 == (type_14 *)0x0) {
        var_48
                  (var_7,"coders/bmp.c","WriteBMPImage",0x77b,ErrorException,
                   "MemoryAllocationFailed","`%s\'",var_4->filename);
        var_49 = (type_6 *)var_2->adjoin;
        while (pIVar9 = var_4, var_49 != (type_6 *)0x0) {
          var_49 = pIVar9->previous;
          var_4 = var_49;
          var_111 = pIVar9;
        }
        goto LAB_001d3a2a;
      }
      var_54 = (char *)var_50(var_47);
      var_51(var_54,0,var_41);
      value = var_31(uStack_17b,var_27);
      switch(value) {
      default:
        goto _L71;
      case 1:
        if ((int)var_4->rows < 1) break;
        var_64 = 0;
        var_65 = 0;
        var_18 = 0;
        do {
          var_53 = var_52(var_4,0,var_18,var_4->columns,1,var_7);
          if (var_53 == (type_12 *)0x0) break;
          var_55 = var_4->columns;
          var_58 = var_54 + (~var_18 + var_4->rows) * var_39;
          var_27 = (type_8)var_55;
          uStack_17b = (type_16)(var_55 >> 8);
          uStack_17a = (type_15)(var_55 >> 0x10);
          var_15 = var_58;
          if (0 < (int)var_55) {
            var_24 = 0;
            var_13 = 0;
            var_38 = 0;
            do {
              var_24 = var_24 * 2;
              if (var_4->channel_map[5].traits != var_28) {
                var_57 = (type_9)var_56(var_53[var_4->channel_map[5].offset]);
                if (var_53[var_4->channel_map[5].offset] != 0.0) {
                  var_57 = 1;
                }
                var_24 = var_24 | var_57;
              }
              var_13 = var_13 + 1;
              if (var_13 == 8) {
                var_13 = 0;
                *var_58 = (char)var_24;
                var_58 = var_58 + 1;
                var_24 = 0;
                var_55 = var_4->columns;
                var_27 = (type_8)var_55;
                uStack_17b = (type_16)(var_55 >> 8);
                uStack_17a = (type_15)(var_55 >> 0x10);
              }
              var_38 = var_38 + 1;
              var_53 = var_53 + var_4->number_channels;
              var_55 = var_59(uStack_17a,var_31(uStack_17b,var_27));
            } while (var_38 < (int)var_55);
            var_15 = var_58;
            if (var_13 != 0) {
              var_15 = var_58 + 1;
              *var_58 = (char)(var_24 << (8U - (char)var_13 & 0x1f));
              var_55 = var_4->columns;
            }
          }
          var_13 = var_55 + 0xe;
          if (-1 < (int)(var_55 + 7)) {
            var_13 = var_55 + 7;
          }
          if (var_13 >> 3 < (int)var_39) {
            var_60 = var_15;
            do {
              var_61 = var_60 + 1;
              *var_60 = '\0';
              var_60 = var_61;
            } while (var_61 != var_15 + (var_39 - (var_13 >> 3)));
          }
          var_24 = var_4->rows;
          if (var_4->previous == (type_6 *)0x0) {
            var_9 = var_62(var_4,"Save/Image",var_63(var_65,var_64),
                                      (type_21)var_24);
            if (var_9 == var_5) break;
            var_24 = var_4->rows;
          }
          var_18 = var_18 + 1;
          var_37 = 0xfffffffe < var_64;
          var_64 = var_64 + 1;
          var_65 = var_65 + (type_9)var_37;
        } while ((int)var_18 < (int)var_24);
        var_37 = var_21 != 2;
        goto LAB_001d149a;
      case 4:
        var_64 = 0;
        var_65 = 0;
        var_18 = 0;
        if (0 < (int)var_4->rows) {
          do {
            var_53 = var_52(var_4,0,var_18,var_4->columns,1,var_7);
            if (var_53 == (type_12 *)0x0) goto LAB_001d1490;
            var_55 = var_4->columns;
            var_58 = var_54 + (~var_18 + var_4->rows) * var_39;
            var_27 = (type_8)var_55;
            uStack_17b = (type_16)(var_55 >> 8);
            uStack_17a = (type_15)(var_55 >> 0x10);
            var_15 = var_58;
            if (0 < (int)var_55) {
              var_37 = false;
              var_13 = 0;
              var_24 = 0;
              do {
                var_24 = var_24 << 4;
                if (var_4->channel_map[5].traits != var_28) {
                  var_66 = (type_9)(type_20)var_43(var_53[var_4->channel_map[5].offset]);
                  var_24 = var_24 | var_66 & 0xf;
                }
                var_37 = !var_37;
                if (!var_37) {
                  *var_58 = (char)var_24;
                  var_58 = var_58 + 1;
                  var_24 = 0;
                  var_55 = var_4->columns;
                  var_27 = (type_8)var_55;
                  uStack_17b = (type_16)(var_55 >> 8);
                  uStack_17a = (type_15)(var_55 >> 0x10);
                }
                var_13 = var_13 + 1;
                var_53 = var_53 + var_4->number_channels;
                var_55 = var_59(uStack_17a,var_31(uStack_17b,var_27));
              } while (var_13 < (int)var_55);
              var_15 = var_58;
              if (var_37) {
                var_15 = var_58 + 1;
                *var_58 = (char)(var_24 << 4);
                var_55 = var_4->columns;
              }
            }
            var_13 = (int)(var_55 + 1) / 2;
            if (var_13 < (int)var_39) {
              var_60 = var_15;
              do {
                var_61 = var_60 + 1;
                *var_60 = '\0';
                var_60 = var_61;
              } while (var_61 != var_15 + (var_39 - var_13));
            }
            var_24 = var_4->rows;
            if (var_4->previous == (type_6 *)0x0) {
              var_9 = var_62(var_4,"Save/Image",var_63(var_65,var_64),
                                        (type_21)var_24);
              if (var_9 == var_5) goto LAB_001d1490;
              var_24 = var_4->rows;
            }
            var_18 = var_18 + 1;
            var_37 = 0xfffffffe < var_64;
            var_64 = var_64 + 1;
            var_65 = var_65 + (type_9)var_37;
          } while ((int)var_18 < (int)var_24);
          var_37 = var_21 != 2;
          goto LAB_001d149a;
        }
        break;
      case 8:
        var_58 = (char *)0x0;
        var_67 = 0;
        var_57 = 0;
        if (0 < (int)var_4->rows) {
          do {
            var_53 = var_52(var_4,0,var_57,var_4->columns,1,var_7);
            if (var_53 == (type_12 *)0x0) break;
            var_60 = var_54 + (~var_57 + var_4->rows) * var_39;
            var_15 = var_60;
            if ((int)var_4->columns < 1) {
              var_13 = 0;
              var_61 = var_60;
            }
            else {
              do {
                cVar30 = '\0';
                if (var_4->channel_map[5].traits != var_28) {
                  cVar30 = (char)(short)var_43(var_53[var_4->channel_map[5].offset]);
                }
                var_61 = var_15 + 1;
                *var_15 = cVar30;
                var_53 = var_53 + var_4->number_channels;
                var_13 = (int)var_61 - (int)var_60;
                var_15 = var_61;
              } while (var_13 < (int)var_4->columns);
            }
            if (var_13 < (int)var_39) {
              var_15 = var_61;
              do {
                var_60 = var_15 + 1;
                *var_15 = '\0';
                var_15 = var_60;
              } while (var_60 != var_61 + (var_39 - var_13));
            }
            uVar26 = var_4->rows;
            if (var_4->previous == (type_6 *)0x0) {
              var_9 = var_62(var_4,"Save/Image",var_63(var_67,var_58),
                                        (type_21)uVar26);
              if (var_9 == var_5) break;
              uVar26 = var_4->rows;
            }
            var_57 = var_57 + 1;
            var_37 = 0xfffffffe < var_58;
            var_58 = (char *)((int)var_58 + 1);
            var_67 = var_67 + (type_9)var_37;
          } while ((int)var_57 < (int)uVar26);
        }
_L71:
        var_37 = var_21 != 2;
        var_68 = var_31(uStack_17b,var_27) == 8;
        bVar33 = var_68 && var_37;
        if ((!var_68 || !var_37) || (var_37 = bVar33, var_2->compression == var_69))
        goto LAB_001d149a;
        var_70 = var_46(var_24 * 8 + 6,var_4->rows + 2);
        if (var_70 != (type_14 *)0x0) {
          var_15 = (char *)var_50(var_70);
          bmp_info.file_size = var_18;
          if (var_4->signature != 0xabacadab) {
                    /* WARNING: Subroutine does not return */
            var_3("image->signature == MagickCoreSignature","coders/bmp.c",0x193,
                          "EncodeImage");
          }
          if (var_4->debug != var_5) {
            var_6(TraceEvent,"coders/bmp.c","EncodeImage",0x195,"%s",(short)var_4->filename
                          );
          }
          if (var_15 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
            var_3("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,
                          "EncodeImage");
          }
          var_58 = var_15;
          if (0 < (int)var_4->rows) {
            local_134 = 0;
            var_13 = 0;
            do {
              var_38 = 0;
              var_60 = var_58;
              if (var_24 != 0) {
                var_71 = 1;
                if (1 < var_39) {
                  do {
                    if (*var_54 == var_54[1]) {
                      var_71 = 1;
                      var_60 = var_54 + 2;
                      do {
                        var_61 = var_60;
                        var_71 = var_71 + 1;
                        var_72 = var_38 + var_71;
                        if (var_71 == var_39 - var_38) {
                          var_61 = var_54 + var_71;
                          break;
                        }
                        if (var_71 == 0xff) {
                          var_71 = -1;
                          var_61 = var_54 + 0xff;
                          break;
                        }
                        var_60 = var_61 + 1;
                      } while (*var_61 == *var_54);
                      *var_58 = (char)var_71;
                      var_60 = var_58 + 2;
                      var_58[1] = *var_54;
                      var_38 = var_72;
                      var_54 = var_61;
                      if ((int)var_39 <= var_72) goto LAB_001d2581;
                    }
                    else {
                      var_61 = var_54 + 1;
                      *var_58 = '\x01';
                      var_58[1] = *var_54;
                      var_38 = var_71;
                    }
                    var_58 = var_58 + 2;
                    var_71 = var_38 + 1;
                    var_54 = var_61;
                  } while (var_71 < (int)var_39);
                }
                *var_58 = '\x01';
                var_60 = var_58 + 2;
                var_58[1] = *var_54;
                var_54 = var_54 + 1;
              }
LAB_001d2581:
              var_58 = var_60 + 2;
              var_60[0] = '\0';
              var_60[1] = '\0';
              var_9 = var_62(var_4,"Save/Image",local_134,(type_21)var_4->rows);
              if (var_9 == var_5) break;
              var_13 = var_13 + 1;
              local_134 = var_63(local_134._4_4_ + (type_9)(0xfffffffe < (type_9)local_134),
                                   (type_9)local_134 + 1);
            } while (var_13 < (int)var_4->rows);
          }
          var_58[0] = '\0';
          var_58[1] = '\x01';
          bmp_info.image_size = (type_9)(var_58 + (2 - (int)var_15));
          var_86 = (char *)(bmp_info.image_size + var_18);
          bmp_info.file_size = (type_9)var_86;
          var_73(var_47);
          bmp_info.compression = 1;
          var_54 = var_15;
          var_47 = var_70;
          if (var_4->debug == var_5) goto LAB_001d14a8;
          goto LAB_001d2640;
        }
        var_73(var_47);
        var_48
                  (var_7,"coders/bmp.c","WriteBMPImage",0x88d,ErrorException,
                   "MemoryAllocationFailed","`%s\'",var_4->filename);
        var_49 = (type_6 *)var_2->adjoin;
        while (pIVar9 = var_4, var_49 != (type_6 *)0x0) {
          var_49 = pIVar9->previous;
          var_4 = var_49;
          var_111 = pIVar9;
        }
        goto LAB_001d3a2a;
      case 0x10:
        var_64 = 0;
        var_83 = 0;
        var_84 = 0;
        if (0 < (int)var_4->rows) {
          do {
            var_53 = var_52(var_4,0,var_64,var_4->columns,1,var_7);
            if (var_53 == (type_12 *)0x0) break;
            var_18 = var_4->rows;
            var_55 = var_4->columns;
            var_74 = (type_7 *)(var_54 + ((var_18 - 1) - var_64) * var_39);
            var_80 = var_74;
            if (0 < (int)var_55) {
              var_79 = var_4->number_channels;
              pPVar5 = var_4->channel_map;
              var_80 = var_74 + var_55;
              var_38 = pPVar5->offset;
              do {
                var_76 = var_53[var_38];
                if (var_13 == 3) {
                  var_77 = 0xf000;
                  if (pPVar5[4].traits != var_28) {
                    var_77 = 0;
                    if (0.0 < var_53[pPVar5[4].offset]) {
                      var_75 = (var_53[pPVar5[4].offset] * (double)DAT_002a9b74) /
                              (double)DAT_0029f710;
                      if (var_75 < (double)DAT_0029f714) {
                        var_75 = var_75 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= var_75) {
                          var_66 = (type_9)(type_20)var_43(var_75 - (double)DAT_0029f134);
                        }
                        else {
                          var_66 = (type_9)(type_20)var_43(var_75);
                        }
                        var_77 = (type_7)(var_66 << 0xc);
                      }
                      else {
                        var_77 = 0xf000;
                      }
                    }
                  }
                  if (0.0 < var_76) {
                    var_76 = (var_76 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= var_76) {
                      var_77 = 0xff00;
                    }
                    else {
                      var_76 = var_76 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= var_76) {
                        var_66 = (type_9)(type_20)var_43(var_76 - (double)DAT_0029f134);
                      }
                      else {
                        var_66 = (type_9)(type_20)var_43(var_76);
                      }
                      var_77 = var_77 | (type_7)(var_66 << 8);
                    }
                  }
                  if (0.0 < var_53[pPVar5[1].offset]) {
                    var_76 = (var_53[pPVar5[1].offset] * (double)DAT_002a9b74) /
                            (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= var_76) {
                      var_77 = 0xfff0;
                    }
                    else {
                      var_76 = var_76 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= var_76) {
                        var_66 = (type_9)(type_20)var_43(var_76 - (double)DAT_0029f134);
                      }
                      else {
                        var_66 = (type_9)(type_20)var_43(var_76);
                      }
                      var_77 = var_77 | (type_7)(var_66 << 4);
                    }
                  }
                  if (0.0 < var_53[pPVar5[2].offset]) {
                    var_76 = (var_53[pPVar5[2].offset] * (double)DAT_002a9b74) /
                            (double)DAT_0029f710;
                    if (var_76 < (double)DAT_0029f714) {
                      var_76 = var_76 + (double)DAT_0029f124;
                      if (var_76 < (double)DAT_0029f134) {
LAB_001d2faa:
                        var_78 = (type_7)(type_20)var_43(var_76);
                      }
                      else {
                        var_78 = (type_7)(type_20)var_43(var_76 - (double)DAT_0029f134);
                      }
                      goto LAB_001d21be;
                    }
LAB_001d2eba:
                    var_77 = 0xffff;
                  }
                }
                else {
                  var_77 = 0;
                  if (var_13 == 2) {
                    if (0.0 < var_76) {
                      var_77 = 0xf800;
                      var_76 = (var_76 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if (var_76 < (double)DAT_0029f714) {
                        var_76 = var_76 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= var_76) {
                          var_66 = (type_9)(type_20)var_43(var_76 - (double)DAT_0029f134);
                        }
                        else {
                          var_66 = (type_9)(type_20)var_43(var_76);
                        }
                        var_77 = (type_7)(var_66 << 0xb);
                      }
                    }
                    if (0.0 < var_53[pPVar5[1].offset]) {
                      var_76 = (var_53[pPVar5[1].offset] * (double)DAT_002cc81c) /
                              (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= var_76) {
                        var_77 = 0xffe0;
                      }
                      else {
                        var_76 = var_76 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= var_76) {
                          var_66 = (type_9)(type_20)var_43(var_76 - (double)DAT_0029f134);
                        }
                        else {
                          var_66 = (type_9)(type_20)var_43(var_76);
                        }
                        var_77 = var_77 | (type_7)(var_66 << 5);
                      }
                    }
                    if (0.0 < var_53[pPVar5[2].offset]) {
                      var_76 = (var_53[pPVar5[2].offset] * (double)DAT_002c5ed8) /
                              (double)DAT_0029f710;
                      if (var_76 < (double)DAT_0029f714) {
                        var_76 = var_76 + (double)DAT_0029f124;
                        if (var_76 < (double)DAT_0029f134) goto LAB_001d2faa;
                        var_78 = (type_7)(type_20)var_43(var_76 - (double)DAT_0029f134);
                        goto LAB_001d21be;
                      }
                      goto LAB_001d2eba;
                    }
                  }
                  else {
                    var_77 = 0;
                    if ((var_13 == 4) && (var_77 = 0x8000, pPVar5[4].traits != var_28))
                    {
                      var_77 = 0;
                      if (0.0 < var_53[pPVar5[4].offset]) {
                        var_75 = var_53[pPVar5[4].offset] / (double)DAT_0029f710;
                        if (var_75 < (double)DAT_0029f714) {
                          var_75 = var_75 + (double)DAT_0029f124;
                          if ((double)DAT_0029f134 <= var_75) {
                            var_66 = (type_9)(type_20)var_43(var_75 - (double)DAT_0029f134);
                          }
                          else {
                            var_66 = (type_9)(type_20)var_43(var_75);
                          }
                          var_77 = (type_7)(var_66 << 0xf);
                        }
                        else {
                          var_77 = 0x8000;
                        }
                      }
                    }
                    if (0.0 < var_76) {
                      var_76 = (var_76 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= var_76) {
                        var_77 = 0xfc00;
                      }
                      else {
                        var_76 = var_76 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= var_76) {
                          var_66 = (type_9)(type_20)var_43(var_76 - (double)DAT_0029f134);
                        }
                        else {
                          var_66 = (type_9)(type_20)var_43(var_76);
                        }
                        var_77 = var_77 | (type_7)(var_66 << 10);
                      }
                    }
                    if (0.0 < var_53[pPVar5[1].offset]) {
                      var_76 = (var_53[pPVar5[1].offset] * (double)DAT_002c5ed8) /
                              (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= var_76) {
                        var_77 = 0xffe0;
                      }
                      else {
                        var_76 = var_76 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= var_76) {
                          var_66 = (type_9)(type_20)var_43(var_76 - (double)DAT_0029f134);
                        }
                        else {
                          var_66 = (type_9)(type_20)var_43(var_76);
                        }
                        var_77 = var_77 | (type_7)(var_66 << 5);
                      }
                    }
                    if (0.0 < var_53[pPVar5[2].offset]) {
                      var_76 = (var_53[pPVar5[2].offset] * (double)DAT_002c5ed8) /
                              (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= var_76) goto LAB_001d2eba;
                      var_76 = var_76 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= var_76) {
                        var_78 = (type_7)(type_20)var_43(var_76 - (double)DAT_0029f134);
                      }
                      else {
                        var_78 = (type_7)(type_20)var_43(var_76);
                      }
LAB_001d21be:
                      var_77 = var_77 | var_78;
                    }
                  }
                }
                *var_74 = var_77;
                var_53 = var_53 + var_79;
                var_74 = var_74 + 1;
              } while (var_74 != var_80);
            }
            if (var_39 != var_55 * 2 &&
                var_81(var_39,var_55 * 2) == (int)(var_39 + var_55 * -2) < 0) {
              var_74 = var_80;
              do {
                var_82 = (type_7 *)((int)var_74 + 1);
                *(char *)var_74 = '\0';
                var_74 = var_82;
              } while (var_82 != var_80 + (var_24 * 2 - var_55));
              var_18 = var_4->rows;
            }
            if (var_4->previous == (type_6 *)0x0) {
              var_9 = var_62(var_4,"Save/Image",var_63(var_84,var_83),
                                        (type_21)var_18);
              if (var_9 == var_5) break;
              var_18 = var_4->rows;
            }
            var_64 = var_64 + 1;
            var_37 = 0xfffffffe < var_83;
            var_83 = var_83 + 1;
            var_84 = var_84 + (type_9)var_37;
          } while ((int)var_64 < (int)var_18);
          var_37 = var_21 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x18:
        var_18 = 0;
        local_184 = 0;
        if (0 < (int)var_4->rows) {
          do {
            var_53 = var_52(var_4,0,var_18,var_4->columns,1,var_7);
            if (var_53 == (type_12 *)0x0) goto LAB_001d1490;
            var_55 = var_4->columns;
            var_15 = var_54 + (~var_18 + var_4->rows) * var_39;
            if (0 < (int)var_55) {
              var_13 = 0;
              var_60 = var_15;
              do {
                cVar30 = '\0';
                if (0.0 < var_53[var_4->channel_map[2].offset]) {
                  var_76 = var_53[var_4->channel_map[2].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (var_76 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                  }
                }
                *var_60 = cVar30;
                cVar30 = '\0';
                if (0.0 < var_53[var_4->channel_map[1].offset]) {
                  var_76 = var_53[var_4->channel_map[1].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (var_76 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                  }
                }
                var_15 = var_60 + 3;
                var_60[1] = cVar30;
                cVar30 = '\0';
                if (0.0 < var_53[var_4->channel_map->offset]) {
                  var_76 = var_53[var_4->channel_map->offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (var_76 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                  }
                }
                var_13 = var_13 + 1;
                var_60[2] = cVar30;
                var_53 = var_53 + var_4->number_channels;
                var_55 = var_4->columns;
                var_60 = var_15;
              } while (var_13 < (int)var_55);
            }
            if ((int)(var_55 * 3) < (int)var_39) {
              var_60 = var_15;
              do {
                var_61 = var_60 + 1;
                *var_60 = '\0';
                var_60 = var_61;
              } while (var_61 != var_15 + var_39 + var_55 * -3);
            }
            var_24 = var_4->rows;
            if (var_4->previous == (type_6 *)0x0) {
              var_9 = var_62(var_4,"Save/Image",local_184,(type_21)var_24);
              if (var_9 == var_5) goto LAB_001d1490;
              var_24 = var_4->rows;
            }
            var_18 = var_18 + 1;
            local_184 = var_63(local_184._4_4_ + (type_9)(0xfffffffe < (type_9)local_184),
                                 (type_9)local_184 + 1);
          } while ((int)var_18 < (int)var_24);
          var_37 = var_21 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x20:
        var_27 = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        var_85 = 0;
        local_184._0_4_ = 0;
        if (0 < (int)var_4->rows) {
          do {
            var_53 = var_52(var_4,0,(type_9)local_184,var_4->columns,1,var_7);
            if (var_53 == (type_12 *)0x0) break;
            var_18 = var_4->rows;
            if (0 < (int)var_4->columns) {
              var_13 = 0;
              var_15 = var_54 + ((var_18 - 1) - (type_9)local_184) * var_39;
              do {
                cVar30 = '\0';
                if (0.0 < var_53[var_4->channel_map[2].offset]) {
                  var_76 = var_53[var_4->channel_map[2].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (var_76 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                  }
                }
                *var_15 = cVar30;
                cVar30 = '\0';
                if (0.0 < var_53[var_4->channel_map[1].offset]) {
                  var_76 = var_53[var_4->channel_map[1].offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (var_76 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                  }
                }
                var_15[1] = cVar30;
                cVar30 = '\0';
                if (0.0 < var_53[var_4->channel_map->offset]) {
                  var_76 = var_53[var_4->channel_map->offset] / (double)DAT_002a7ff0;
                  cVar30 = -1;
                  if (var_76 < (double)DAT_002a7ff4) {
                    cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                  }
                }
                var_15[2] = cVar30;
                cVar30 = -1;
                if (var_4->channel_map[4].traits != var_28) {
                  cVar30 = '\0';
                  if (0.0 < var_53[var_4->channel_map[4].offset]) {
                    var_76 = var_53[var_4->channel_map[4].offset] / (double)DAT_002a7ff0;
                    if ((double)DAT_002a7ff4 <= var_76) {
                      cVar30 = -1;
                    }
                    else {
                      cVar30 = (char)(short)var_43(var_76 + (double)DAT_0029f124);
                    }
                  }
                }
                var_15[3] = cVar30;
                var_13 = var_13 + 1;
                var_53 = var_53 + var_4->number_channels;
                var_15 = var_15 + 4;
              } while (var_13 < (int)var_4->columns);
              var_18 = var_4->rows;
            }
            if (var_4->previous == (type_6 *)0x0) {
              var_9 = var_62(var_4,"Save/Image",
                                        var_63(var_85,
                                                 var_59(uStack_17a,var_31(uStack_17b,var_27))
                                                ),(type_21)var_18);
              if (var_9 == var_5) break;
              var_18 = var_4->rows;
            }
            local_184._0_4_ = (type_9)local_184 + 1;
            var_24 = var_59(uStack_17a,var_31(uStack_17b,var_27));
            var_13 = var_59(uStack_17a,var_31(uStack_17b,var_27)) + 1;
            var_27 = (type_8)var_13;
            uStack_17b = (type_16)((type_9)var_13 >> 8);
            uStack_17a = (type_15)((type_9)var_13 >> 0x10);
            var_85 = var_85 + (type_9)(0xfffffffe < var_24);
          } while ((int)(type_9)local_184 < (int)var_18);
        }
      }
LAB_001d1490:
      var_37 = var_21 != 2;
LAB_001d149a:
      bVar33 = var_37;
      if (var_4->debug == var_5) {
LAB_001d14a8:
        if (var_35 == (type_11 *)0x0) goto LAB_001d279e;
LAB_001d14b4:
        var_58 = var_86 + -0xe;
        var_55 = var_87(var_35);
        var_27 = (type_8)var_55;
        uStack_17b = (type_16)(var_55 >> 8);
        uStack_17a = (type_15)(var_55 >> 0x10);
        var_18 = var_55 & 3;
        if (var_18 == 0) {
          var_88 = 0;
          var_109 = 0;
        }
        else {
          var_88 = 4 - var_18;
          var_109 = -(type_9)(4 < var_18);
        }
        var_86 = var_86 + var_88 + var_55;
        bmp_info.file_size = (type_9)var_86;
      }
      else {
LAB_001d2640:
        uVar48 = var_89((double)var_21,0);
        uVar49 = (type_17)((type_21)(double)var_21 >> 0x20);
        var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x89e,
                       "   Writing BMP version %.20g datastream",uVar48,uVar49);
        if (var_4->storage_class == var_30) {
          var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a1,
                         "   Storage class=DirectClass",uVar48,uVar49);
        }
        else {
          var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a4,
                         "   Storage class=PseudoClass",uVar48,uVar49);
        }
        uVar48 = var_89((double)var_4->depth,0);
        uVar49 = (type_17)((type_21)(double)var_4->depth >> 0x20);
        var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",uVar48
                       ,uVar49);
        if (var_4->alpha_trait == var_28) {
          var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",
                         uVar48,uVar49);
        }
        else {
          var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",uVar48,
                         uVar49);
        }
        uVar48 = var_89((double)value,0);
        uVar49 = (type_17)((type_21)(double)value >> 0x20);
        var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g"
                       ,uVar48,uVar49);
        if (bmp_info.compression == 1) {
          var_15 = "   Compression=BI_RLE8";
          var_55 = 0x8ba;
        }
        else if (bmp_info.compression == 0) {
          var_15 = "   Compression=BI_RGB";
          var_55 = 0x8b4;
        }
        else if (bmp_info.compression == 3) {
          var_15 = "   Compression=BI_BITFIELDS";
          var_55 = 0x8c0;
        }
        else {
          uVar48 = (type_15)bmp_info.compression;
          var_15 = "   Compression=UNKNOWN (%u)";
          var_55 = 0x8c6;
        }
        var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",var_55,var_15,uVar48,uVar49);
        if (var_29 == 0) {
          var_15 = "   Number_colors=unspecified";
          var_55 = 0x8cc;
        }
        else {
          var_15 = "   Number_colors=%u";
          uVar48 = (type_15)var_29;
          var_55 = 0x8cf;
        }
        var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",var_55,var_15,uVar48,uVar49);
        if (var_35 != (type_11 *)0x0) goto LAB_001d14b4;
LAB_001d279e:
        var_88 = 0;
        var_109 = 0;
        var_27 = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        var_58 = (char *)0x0;
      }
      var_90(var_4,2,&DAT_002a251a);
      var_91(var_4,(type_9)var_86);
      var_91(var_4,0);
      var_91(var_4,bmp_info.offset_bits);
      if (var_21 == 2) {
        var_91(var_4,bmp_info.size);
        var_92(var_4,(short)var_45);
        var_92(var_4,(short)var_40);
        var_93(var_4,1);
        var_93(var_4,value);
        var_22 = var_4->storage_class;
        var_9 = var_4->debug;
      }
      else {
        var_91(var_4,bmp_info.size);
        var_94(var_4,var_45);
        var_94(var_4,var_40);
        var_93(var_4,1);
        var_93(var_4,value);
        var_91(var_4,bmp_info.compression);
        var_91(var_4,bmp_info.image_size);
        var_91(var_4,bmp_info.x_pixels);
        var_91(var_4,bmp_info.y_pixels);
        var_91(var_4,var_29);
        var_91(var_4,var_29);
        if ((var_21 == 4) && (var_95 || var_4->alpha_trait != var_28)) {
          var_91(var_4,bmp_info.red_mask);
          var_91(var_4,bmp_info.green_mask);
          var_91(var_4,bmp_info.blue_mask);
          var_91(var_4,bmp_info.alpha_mask);
          if (var_35 == (type_11 *)0x0) {
            var_91(var_4,0x73524742);
          }
          else {
            var_91(var_4,0x4d424544);
          }
          var_76 = (var_4->chromaticity).red_primary.x;
          if ((1.0 < var_76) || (var_76 <= 0.0)) {
            var_66 = 0;
            (var_4->chromaticity).red_primary.x = 0.0;
          }
          else {
            var_66 = (type_9)(type_20)var_43(var_76 * (double)var_96);
          }
          var_76 = (var_4->chromaticity).red_primary.y;
          if ((1.0 < var_76) || (var_76 <= 0.0)) {
            (var_4->chromaticity).red_primary.y = 0.0;
          }
          var_76 = (var_4->chromaticity).green_primary.x;
          if ((1.0 < var_76) || (var_76 <= 0.0)) {
            (var_4->chromaticity).green_primary.x = 0.0;
          }
          var_76 = (var_4->chromaticity).green_primary.y;
          if ((1.0 < var_76) || (var_76 <= 0.0)) {
            (var_4->chromaticity).green_primary.y = 0.0;
          }
          var_76 = (var_4->chromaticity).blue_primary.x;
          if ((1.0 < var_76) || (var_76 <= 0.0)) {
            (var_4->chromaticity).blue_primary.x = 0.0;
          }
          var_76 = (var_4->chromaticity).blue_primary.y;
          if ((1.0 < var_76) || (var_76 <= 0.0)) {
            (var_4->chromaticity).blue_primary.y = 0.0;
          }
          if ((1.0 < bmp_info.gamma_scale.x) || (bmp_info.gamma_scale.x <= 0.0)) {
            bmp_info.gamma_scale.x = 0.0;
          }
          var_76 = bmp_info.gamma_scale.x;
          if ((1.0 < bmp_info.gamma_scale.y) || (bmp_info.gamma_scale.y <= 0.0)) {
            bmp_info.gamma_scale.y = 0.0;
          }
          var_75 = bmp_info.gamma_scale.y;
          if ((1.0 < bmp_info.gamma_scale.z) || (bmp_info.gamma_scale.z <= 0.0)) {
            bmp_info.gamma_scale.z = 0.0;
          }
          var_99 = bmp_info.gamma_scale.z;
          var_91(var_4,var_66);
          var_97 = (double)var_96;
          var_66 = (type_9)(type_20)
                           var_43((float)(var_4->chromaticity).red_primary.y * var_96);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)
                           var_43((1.0 - ((var_4->chromaticity).red_primary.x +
                                        (var_4->chromaticity).red_primary.y)) * var_97);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)var_43(var_97 * (var_4->chromaticity).green_primary.x);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)var_43(var_97 * (var_4->chromaticity).green_primary.y);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)
                           var_43((1.0 - ((var_4->chromaticity).green_primary.x +
                                        (var_4->chromaticity).green_primary.y)) * var_97);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)var_43(var_97 * (var_4->chromaticity).blue_primary.x);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)var_43(var_97 * (var_4->chromaticity).blue_primary.y);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)
                           var_43((1.0 - ((var_4->chromaticity).blue_primary.x +
                                        (var_4->chromaticity).blue_primary.y)) * var_97);
          var_91(var_4,var_66);
          var_97 = (double)var_98;
          var_66 = (type_9)(type_20)var_43((float)var_76 * var_98);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)var_43(var_75 * var_97);
          var_91(var_4,var_66);
          var_66 = (type_9)(type_20)var_43(var_99 * var_97);
          var_91(var_4,var_66);
          if ((var_4->rendering_intent != var_36) || (bVar43)) {
            var_24 = var_4->rendering_intent - var_100;
            var_18 = 0;
            if (var_24 < 4) {
              var_18 = *(type_9 *)(var_101 + var_24 * 4);
            }
            var_91(var_4,var_18);
            var_91(var_4,(type_9)var_58);
            var_91(var_4,var_59(uStack_17a,var_31(uStack_17b,var_27)) + var_88);
            var_91(var_4,0);
          }
        }
        var_22 = var_4->storage_class;
        var_9 = var_4->debug;
      }
      if (var_22 == var_23) {
        if (var_9 != var_5) {
          local_184 = (type_21)var_4->colors;
          var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries"
                         ,var_89((double)local_184,0),(int)((type_21)(double)local_184 >> 0x20));
        }
        var_102 = (type_8)bmp_info.bits_per_pixel;
        var_45 = 1 << (var_102 & 0x1f);
        var_104 = (type_15 *)var_103(var_45,4);
        if (var_104 == (type_15 *)0x0) {
          var_73(var_47);
          var_48
                    (var_7,"coders/bmp.c","WriteBMPImage",0x97d,ErrorException,
                     "MemoryAllocationFailed","`%s\'",var_4->filename);
          var_49 = (type_6 *)var_2->adjoin;
          while (pIVar9 = var_4, var_49 != (type_6 *)0x0) {
            var_49 = pIVar9->previous;
            var_4 = var_49;
            var_111 = pIVar9;
          }
LAB_001d3a2a:
          var_105(var_111);
          var_9 = var_5;
          goto LAB_001d3a3a;
        }
        var_18 = bmp_info.number_colors;
        if ((int)var_4->colors <= (int)bmp_info.number_colors) {
          var_18 = var_4->colors;
        }
        var_106 = var_104;
        if ((int)var_18 < 1) {
          var_40 = 0;
        }
        else {
          var_13 = 0;
          var_40 = 0;
          do {
            var_76 = *(double *)((int)&var_4->colormap->blue + var_13);
            uVar36 = 0;
            if (0.0 < var_76) {
              var_76 = var_76 / (double)DAT_002a7ff0;
              uVar36 = 0xff;
              if (var_76 < (double)DAT_002a7ff4) {
                uVar36 = (type_16)(short)var_43(var_76 + (double)DAT_0029f124);
              }
            }
            *(type_16 *)var_106 = uVar36;
            var_76 = *(double *)((int)&var_4->colormap->green + var_13);
            uVar36 = 0;
            if (0.0 < var_76) {
              var_76 = var_76 / (double)DAT_002a7ff0;
              uVar36 = 0xff;
              if (var_76 < (double)DAT_002a7ff4) {
                uVar36 = (type_16)(short)var_43(var_76 + (double)DAT_0029f124);
              }
            }
            *(type_16 *)((int)var_106 + 1) = uVar36;
            var_76 = *(double *)((int)&var_4->colormap->red + var_13);
            uVar36 = 0;
            if (0.0 < var_76) {
              var_76 = var_76 / (double)DAT_002a7ff0;
              uVar36 = 0xff;
              if (var_76 < (double)DAT_002a7ff4) {
                uVar36 = (type_16)(short)var_43(var_76 + (double)DAT_0029f124);
              }
            }
            *(type_16 *)(var_106 + 1) = uVar36;
            if (bVar33) {
              *(type_16 *)((int)var_106 + 3) = 0;
              var_106 = var_106 + 2;
            }
            else {
              var_106 = (type_15 *)((int)var_106 + 3);
            }
            var_40 = var_40 + 1;
            var_13 = var_13 + 0x50;
            var_18 = bmp_info.number_colors;
            if ((int)var_4->colors <= (int)bmp_info.number_colors) {
              var_18 = var_4->colors;
            }
          } while ((int)var_40 < (int)var_18);
        }
        if ((int)var_40 < (int)var_45) {
          do {
            while( true ) {
              *(type_16 *)(var_106 + 1) = 0;
              *var_106 = 0;
              if (!bVar33) break;
              var_40 = var_40 + 1;
              *(type_16 *)((int)var_106 + 3) = 0;
              var_106 = var_106 + 2;
              if (var_40 == var_45) goto LAB_001d3985;
            }
            var_40 = var_40 + 1;
            var_106 = (type_15 *)((int)var_106 + 3);
          } while (var_40 != var_45);
        }
LAB_001d3985:
        if (var_21 == 2) {
          var_13 = 3;
        }
        else {
          var_13 = 4;
        }
        var_90(var_4,var_13 << (var_102 & 0x1f),var_104);
        var_107(var_104);
        var_9 = var_4->debug;
      }
      var_18 = bmp_info.image_size;
      if (var_9 != var_5) {
        var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",
                       (short)bmp_info.image_size);
      }
      var_90(var_4,var_18,var_54);
      if (var_35 != (type_11 *)0x0) {
        if (var_4->debug != var_5) {
          var_76 = (double)var_59(uStack_17a,var_31(uStack_17b,var_27)) +
                  (double)(short)var_88;
          var_6(CoderEvent,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",
                         var_89(var_76,0),(int)((type_21)var_76 >> 0x20));
        }
        data = var_108(var_35);
        var_90(var_4,var_59(uStack_17a,var_31(uStack_17b,var_27)),data);
        if (var_109 != 0 || var_88 != 0) {
          var_90(var_4,var_88,&DAT_002cc660);
        }
      }
      var_73(var_47);
      var_111 = var_110(var_4);
      if (var_111 == (type_3 *)0x0) {
LAB_001d3caf:
        var_105(var_4);
        var_9 = MagickTrue;
        goto LAB_001d3a3a;
      }
      var_4 = var_112(var_4);
      var_24 = var_113 + 1;
      var_13 = var_114 + (type_9)(0xfffffffe < var_113);
      var_9 = var_62(var_4,"Save/Images",var_63(var_114,var_113),(type_21)sVar17)
      ;
      if ((var_9 == var_5) || (var_2->adjoin == var_5)) goto LAB_001d3caf;
      var_18 = var_4->colorspace - var_17;
      var_113 = var_24;
      var_114 = var_13;
      if (0x1e < var_18) break;
LAB_001d1cae:
    } while ((0x403c0001U >> (var_18 & 0x1f) & 1) != 0);
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (type_identifier) 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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 (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (for_statement initializer: (assignment_expression left: (identifier) right: (number_literal)) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (if_statement condition: (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)))) alternative: (else_clause (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))) (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))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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))) (expression_statement (assignment_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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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))) (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (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))) (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))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (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))) (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (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))) (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))) (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))) (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))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (number_literal)))) (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) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (unary_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (unary_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (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 (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (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 (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (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 (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (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 (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (number_literal) (string_literal (string_content)) (string_literal (string_content) (escape_sequence)) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (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) (identifier))))) (switch_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (case_statement (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (break_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) (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) 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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (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: (pointer_expression argument: (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 (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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 (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (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 (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (subscript_expression argument: (identifier) index: (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: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (call_expression function: (identifier) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (labeled_statement label: (statement_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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (break_statement))) (if_statement condition: (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: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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) (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (number_literal) (string_literal (string_content)) (string_literal (string_content) (escape_sequence)) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (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: (identifier) 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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (labeled_statement label: (statement_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))))))))) alternative: (else_clause (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 (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_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 (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (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: (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: (identifier) 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))))) (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (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)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (primitive_type)) 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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (primitive_type)) 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 (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (primitive_type)) 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 (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (field_expression argument: (identifier) field: (field_identifier)) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (identifier))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (primitive_type)) 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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (primitive_type)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (primitive_type)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (subscript_expression argument: (identifier) index: (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (identifier))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (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 (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (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: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (number_literal) (string_literal (string_content)) (string_literal (string_content) (escape_sequence)) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (identifier))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (identifier))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (identifier))))))) (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: (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: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_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)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (MISSING ";")))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (true))))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

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

{
  double dVar1;
  double dVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  bool bVar6;
  ushort uVar7;
  int *piVar8;
  double dVar9;
  byte bVar10;
  byte bVar11;
  ushort uVar12;
  int iVar13;
  int iVar14;
  undefined4 uVar15;
  uint uVar16;
  uint uVar17;
  int iVar18;
  int iVar19;
  ushort *puVar20;
  undefined2 *puVar21;
  int iVar22;
  undefined2 *puVar23;
  char cVar24;
  byte bVar25;
  ushort uVar26;
  uint uVar27;
  int iVar28;
  bool bVar29;
  char *pcVar30;
  undefined1 uVar31;
  ushort *puVar32;
  ushort *puVar33;
  uint uVar34;
  int *piVar35;
  undefined4 *puVar36;
  size_t sVar37;
  char *pcVar38;
  int iVar39;
  int iVar40;
  int in_GS_OFFSET;
  bool bVar41;
  bool bVar42;
  bool bVar43;
  byte bVar44;
  undefined4 uVar45;
  char *pcVar46;
  double dVar47;
  undefined8 local_184;
  byte local_17c;
  undefined1 uStack_17b;
  undefined2 uStack_17a;
  int iStack_178;
  int local_174;
  int local_170;
  char *local_168;
  char *local_164;
  int local_160;
  uint local_14c;
  int iStack_148;
  uint local_144;
  uint local_134;
  int iStack_130;
  int local_128;
  int local_124;
  short local_120;
  short local_11c;
  uint local_10c;
  int local_108;
  uint local_104;
  int iStack_100;
  uint local_e4;
  int local_c8;
  undefined4 local_c4;
  int local_c0;
  undefined4 local_bc;
  int local_b8;
  int local_b4;
  undefined2 local_b0;
  short local_ae;
  uint local_ac;
  size_t local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  uint local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  uint local_88;
  double local_38;
  double local_30;
  double local_28;
  int local_20;
  
  bVar44 = 0;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info != (const ImageInfo *) NULL","coders/bmp.c",0x6a1,"WriteBMPImage");
  }
  if (param_1[0xc7d] != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image_info->signature == MagickCoreSignature","coders/bmp.c",0x6a2,
                  "WriteBMPImage");
  }
  if (param_2 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image != (Image *) NULL","coders/bmp.c",0x6a3,"WriteBMPImage");
  }
  if (param_2[0xcd1] != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x6a4,"WriteBMPImage");
  }
  if (param_2[0xcca] != 0) {
    LogMagickEvent(0x8000,"coders/bmp.c","WriteBMPImage",0x6a6,&DAT_002b6e4e,param_2 + 0xc6);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception != (ExceptionInfo *) NULL","coders/bmp.c",0x6a7,"WriteBMPImage");
  }
  if (*(int *)(param_3 + 0x1c) != -0x54535255) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("exception->signature == MagickCoreSignature","coders/bmp.c",0x6a8,"WriteBMPImage"
                 );
  }
  iVar13 = OpenBlob(param_1,param_2,4,param_3);
  if (iVar13 == 0) {
LAB_001d3a3a:
    if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
      FUN_0029eab0();
    }
    return iVar13;
  }
  iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227a);
  bVar11 = 2;
  if (iVar13 != 0) {
    iVar13 = LocaleCompare(param_1 + 0x7c,&DAT_002a227f);
    bVar11 = (iVar13 != 0) + 3;
  }
  iVar13 = GetImageOption(param_1,"bmp:format");
  if (iVar13 != 0) {
    LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x6b8,"  Format=%s",iVar13);
    iVar14 = LocaleCompare(iVar13,&DAT_002cc136);
    bVar25 = 2;
    if (iVar14 != 0) {
      bVar25 = bVar11;
    }
    iVar14 = LocaleCompare(iVar13,&DAT_002cc13b);
    bVar10 = 3;
    if (iVar14 != 0) {
      bVar10 = bVar25;
    }
    iVar13 = LocaleCompare(iVar13,&DAT_002cc140);
    bVar11 = 4;
    if (iVar13 != 0) {
      bVar11 = bVar10;
    }
  }
  uVar15 = GetImageListLength(param_2);
  local_10c = 0;
  local_108 = 0;
  uVar16 = param_2[1] - 3;
  if (uVar16 < 0x1f) goto LAB_001d1cae;
  do {
    TransformImageColorspace(param_2,0x17);
    do {
      puVar36 = &local_c4;
      for (iVar13 = 0x29; iVar13 != 0; iVar13 = iVar13 + -1) {
        *puVar36 = 0;
        puVar36 = puVar36 + (uint)bVar44 * -2 + 1;
      }
      if (bVar11 == 2) {
        local_c8 = 0x1a;
        iVar13 = 0x1a;
      }
      else {
        local_c8 = 0x36;
        iVar13 = 0x36;
      }
      local_98 = 0xff0000;
      local_94 = 0xff00;
      local_90 = 0xff;
      local_8c = 0xff000000;
      iVar14 = *param_2;
      local_c0 = iVar13;
      if (iVar14 == 2) {
        uVar16 = param_2[9];
        if (0x100 < uVar16) {
          SetImageStorageClass(param_2,1);
          iVar14 = *param_2;
          goto LAB_001d0f25;
        }
LAB_001d0f31:
        if (uVar16 < 3) {
          local_ae = 1;
          if (*param_1 == 0x13) goto LAB_001d36c0;
LAB_001d0f54:
          local_17c = (byte)local_ae;
          local_144 = 1 << (local_17c & 0x1f);
          uStack_17b = (undefined1)((ushort)local_ae >> 8);
        }
        else {
          local_ae = (-(ushort)(uVar16 < 0x11) & 0xfffc) + 8;
          if (*param_1 != 0x13) goto LAB_001d0f54;
LAB_001d36c0:
          local_144 = 0x100;
          local_ae = 8;
          local_17c = 8;
          uStack_17b = 0;
        }
        local_9c = local_144;
        if ((param_2[0xa5] == 0) && (uVar16 <= local_144)) {
          local_c0 = iVar13 + (3 << ((byte)local_ae & 0x1f));
          iVar13 = local_c0;
          if (bVar11 != 2) {
            local_c0 = local_c0 + local_144;
            iVar13 = local_c0;
          }
        }
        else {
          SetImageStorageClass(param_2,1);
          if (*param_2 == 1) goto LAB_001d3250;
        }
        uVar16 = (uint)CONCAT11(uStack_17b,local_17c);
        iVar14 = 0;
        local_c8 = iVar13;
      }
      else {
LAB_001d0f25:
        if (iVar14 != 1) {
          uVar16 = param_2[9];
          goto LAB_001d0f31;
        }
LAB_001d3250:
        local_9c = 0;
        iVar13 = GetImageOption(param_1,"bmp:subtype");
        if (iVar13 == 0) {
          if (bVar11 == 4) {
            if (param_2[0xa5] == 0) goto LAB_001d3e67;
LAB_001d3d56:
            local_ac = 3;
            local_ae = 0x20;
            local_144 = 0;
            local_17c = 0x20;
            uStack_17b = 0;
            uVar16 = 0x20;
            iVar14 = 0;
          }
          else {
LAB_001d3da8:
            local_ac = 0;
            local_ae = 0x18;
            if ((bVar11 == 3) && (param_2[0xa5] != 0)) {
              uVar45 = GetImageOption(param_1,"bmp3:alpha");
              iVar13 = IsStringTrue(uVar45);
              if (iVar13 == 0) {
                uVar16 = 0x18;
                iVar14 = 0;
                local_17c = 0x18;
                uStack_17b = 0;
                local_144 = 0;
              }
              else {
                local_144 = 0;
                uVar16 = 0x20;
                local_ae = 0x20;
                local_17c = 0x20;
                uStack_17b = 0;
                iVar14 = 0;
              }
            }
            else {
LAB_001d3e67:
              local_ac = 0;
              local_ae = 0x18;
              local_144 = 0;
              uVar16 = 0x18;
              local_17c = 0x18;
              uStack_17b = 0;
              iVar14 = 0;
            }
          }
        }
        else {
          if (param_2[0xa5] == 0) {
            iVar14 = LocaleNCompare(iVar13,"RGB555");
            if (iVar14 == 0) {
              local_98 = 0x7c00;
              local_94 = 0x3e0;
              local_90 = 0x1f;
              local_8c = 0;
              iVar14 = 1;
            }
            else {
              iVar13 = LocaleNCompare(iVar13,"RGB565");
              if (iVar13 != 0) {
                if (bVar11 == 4) goto LAB_001d3e67;
                goto LAB_001d3da8;
              }
              local_98 = 0xf800;
              local_94 = 0x7e0;
              local_90 = 0x1f;
              local_8c = 0;
              iVar14 = 2;
            }
          }
          else {
            iVar14 = LocaleNCompare(iVar13,"ARGB4444");
            if (iVar14 == 0) {
              local_98 = 0xf00;
              local_94 = 0xf0;
              local_90 = 0xf;
              local_8c = 0xf000;
              iVar14 = 3;
            }
            else {
              iVar13 = LocaleNCompare(iVar13,"ARGB1555");
              if (iVar13 != 0) {
                if (bVar11 == 4) goto LAB_001d3d56;
                goto LAB_001d3da8;
              }
              local_98 = 0x7c00;
              local_94 = 0x3e0;
              local_90 = 0x1f;
              local_8c = 0x8000;
              iVar14 = 4;
            }
          }
          local_ac = 3;
          local_ae = 0x10;
          local_144 = 0;
          local_17c = 0x10;
          uStack_17b = 0;
          uVar16 = 0x10;
        }
      }
      local_c4 = 0;
      uVar16 = uVar16 * param_2[6] + 0x1f >> 5;
      uVar17 = uVar16 * 4;
      iVar13 = GetImageProfile(param_2,&DAT_002a81ca);
      bVar41 = iVar13 != 0;
      bVar6 = true;
      if (param_2[0x75] == 0 && !bVar41) {
        bVar6 = *(double *)(param_2 + 0x5b) != 0.0;
      }
      if (bVar11 == 2) {
        local_bc = 0xc;
      }
      else if ((bVar11 == 3) || (!bVar6 && param_2[0xa5] == 0)) {
        local_bc = 0x28;
        bVar11 = 3;
      }
      else {
        if (param_2[0x75] == 0 && !bVar41) {
          local_bc = 0x6c;
          iVar18 = 0x44;
        }
        else {
          local_bc = 0x7c;
          iVar18 = 0x54;
        }
        local_c8 = local_c8 + iVar18;
        bVar11 = 4;
        local_c0 = local_c0 + iVar18;
      }
      iVar18 = param_2[6];
      local_b0 = 1;
      local_a4 = 0xb6d;
      iVar28 = param_2[7];
      local_a0 = 0xb6d;
      sVar37 = uVar17 * iVar28;
      local_128 = local_c8 + sVar37;
      if ((uint)param_2[0x77] < 2) {
        local_e4 = (uint)(longlong)
                         ROUND(((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c) /
                               (float)_DAT_002b7d50);
        local_a4 = local_e4;
        local_e4 = (uint)(longlong)
                         ROUND((DAT_0029f71c * (float)*(double *)(param_2 + 0x7e)) /
                               (float)_DAT_002b7d50);
        local_a0 = local_e4;
      }
      else if (param_2[0x77] == 2) {
        local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x7c) * DAT_0029f71c);
        local_a4 = local_e4;
        local_e4 = (uint)(longlong)ROUND(DAT_0029f71c * (float)*(double *)(param_2 + 0x7e));
        local_a0 = local_e4;
      }
      uVar27 = iVar18 + 0x100U;
      if (iVar18 + 0x100U < uVar17) {
        uVar27 = uVar17;
      }
      local_b8 = iVar18;
      local_b4 = iVar28;
      local_a8 = sVar37;
      local_88 = local_144;
      local_124 = AcquireVirtualMemory(iVar28,uVar27);
      piVar35 = param_2;
      if (local_124 == 0) {
        ThrowMagickException
                  (param_3,"coders/bmp.c","WriteBMPImage",0x77b,400,"MemoryAllocationFailed","`%s\'"
                   ,param_2 + 0xc6);
        piVar5 = (int *)param_1[3];
        while (piVar8 = param_2, piVar5 != (int *)0x0) {
          piVar5 = (int *)piVar8[0xccf];
          param_2 = piVar5;
          piVar35 = piVar8;
        }
        goto LAB_001d3a2a;
      }
      local_168 = (char *)GetVirtualMemoryBlob(local_124);
      memset(local_168,0,sVar37);
      uVar7 = CONCAT11(uStack_17b,local_17c);
      switch(uVar7) {
      default:
        goto LAB_001d23a7;
      case 1:
        if (param_2[7] < 1) break;
        local_14c = 0;
        iStack_148 = 0;
        uVar16 = 0;
        do {
          iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);
          if (iVar14 == 0) break;
          iVar19 = param_2[6];
          local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;
          local_17c = (byte)iVar19;
          uStack_17b = (undefined1)((uint)iVar19 >> 8);
          uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
          pcVar46 = local_164;
          if (0 < iVar19) {
            uVar27 = 0;
            iVar39 = 0;
            iVar22 = 0;
            do {
              uVar27 = uVar27 * 2;
              if (*(int *)(param_2[0xaa] + 0x40) != 0) {
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8);
                uVar34 = (uint)NAN(dVar47);
                if (dVar47 != 0.0) {
                  uVar34 = 1;
                }
                uVar27 = uVar27 | uVar34;
              }
              iVar39 = iVar39 + 1;
              if (iVar39 == 8) {
                iVar39 = 0;
                *local_164 = (char)uVar27;
                local_164 = local_164 + 1;
                uVar27 = 0;
                iVar19 = param_2[6];
                local_17c = (byte)iVar19;
                uStack_17b = (undefined1)((uint)iVar19 >> 8);
                uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
              }
              iVar22 = iVar22 + 1;
              iVar14 = iVar14 + param_2[0xa6] * 8;
              iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
            } while (iVar22 < iVar19);
            pcVar46 = local_164;
            if (iVar39 != 0) {
              pcVar46 = local_164 + 1;
              *local_164 = (char)(uVar27 << (8U - (char)iVar39 & 0x1f));
              iVar19 = param_2[6];
            }
          }
          iVar14 = iVar19 + 0xe;
          if (-1 < iVar19 + 7) {
            iVar14 = iVar19 + 7;
          }
          if (iVar14 >> 3 < (int)uVar17) {
            pcVar38 = pcVar46;
            do {
              pcVar30 = pcVar38 + 1;
              *pcVar38 = '\0';
              pcVar38 = pcVar30;
            } while (pcVar30 != pcVar46 + (uVar17 - (iVar14 >> 3)));
          }
          iVar14 = param_2[7];
          if (param_2[0xccf] == 0) {
            iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);
            if (iVar14 == 0) break;
            iVar14 = param_2[7];
          }
          uVar16 = uVar16 + 1;
          bVar42 = 0xfffffffe < local_14c;
          local_14c = local_14c + 1;
          iStack_148 = iStack_148 + (uint)bVar42;
        } while ((int)uVar16 < iVar14);
        bVar42 = bVar11 != 2;
        goto LAB_001d149a;
      case 4:
        local_14c = 0;
        iStack_148 = 0;
        uVar16 = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);
            if (iVar14 == 0) goto LAB_001d1490;
            iVar19 = param_2[6];
            local_164 = local_168 + (~uVar16 + param_2[7]) * uVar17;
            local_17c = (byte)iVar19;
            uStack_17b = (undefined1)((uint)iVar19 >> 8);
            uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
            pcVar46 = local_164;
            if (0 < iVar19) {
              bVar42 = false;
              iVar39 = 0;
              uVar27 = 0;
              do {
                uVar27 = uVar27 << 4;
                if (*(int *)(param_2[0xaa] + 0x40) != 0) {
                  local_e4 = (uint)(longlong)
                                   ROUND(*(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));
                  uVar27 = uVar27 | local_e4 & 0xf;
                }
                bVar42 = !bVar42;
                if (!bVar42) {
                  *local_164 = (char)uVar27;
                  local_164 = local_164 + 1;
                  uVar27 = 0;
                  iVar19 = param_2[6];
                  local_17c = (byte)iVar19;
                  uStack_17b = (undefined1)((uint)iVar19 >> 8);
                  uStack_17a = (undefined2)((uint)iVar19 >> 0x10);
                }
                iVar39 = iVar39 + 1;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                iVar19 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
              } while (iVar39 < iVar19);
              pcVar46 = local_164;
              if (bVar42) {
                pcVar46 = local_164 + 1;
                *local_164 = (char)(uVar27 << 4);
                iVar19 = param_2[6];
              }
            }
            iVar14 = (iVar19 + 1) / 2;
            if (iVar14 < (int)uVar17) {
              pcVar38 = pcVar46;
              do {
                pcVar30 = pcVar38 + 1;
                *pcVar38 = '\0';
                pcVar38 = pcVar30;
              } while (pcVar30 != pcVar46 + (uVar17 - iVar14));
            }
            iVar14 = param_2[7];
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",local_14c,iStack_148,iVar14,0);
              if (iVar14 == 0) goto LAB_001d1490;
              iVar14 = param_2[7];
            }
            uVar16 = uVar16 + 1;
            bVar42 = 0xfffffffe < local_14c;
            local_14c = local_14c + 1;
            iStack_148 = iStack_148 + (uint)bVar42;
          } while ((int)uVar16 < iVar14);
          bVar42 = bVar11 != 2;
          goto LAB_001d149a;
        }
        break;
      case 8:
        local_164 = (char *)0x0;
        local_160 = 0;
        uVar27 = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,uVar27,param_2[6],1,param_3);
            if (iVar14 == 0) break;
            pcVar38 = local_168 + (~uVar27 + param_2[7]) * uVar17;
            pcVar46 = pcVar38;
            if (param_2[6] < 1) {
              iVar19 = 0;
              pcVar30 = pcVar38;
            }
            else {
              do {
                cVar24 = '\0';
                if (*(int *)(param_2[0xaa] + 0x40) != 0) {
                  cVar24 = (char)(short)ROUND(*(double *)
                                               (iVar14 + *(int *)(param_2[0xaa] + 0x44) * 8));
                }
                pcVar30 = pcVar46 + 1;
                *pcVar46 = cVar24;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                iVar19 = (int)pcVar30 - (int)pcVar38;
                pcVar46 = pcVar30;
              } while (iVar19 < param_2[6]);
            }
            if (iVar19 < (int)uVar17) {
              pcVar46 = pcVar30;
              do {
                pcVar38 = pcVar46 + 1;
                *pcVar46 = '\0';
                pcVar46 = pcVar38;
              } while (pcVar38 != pcVar30 + (uVar17 - iVar19));
            }
            iVar14 = param_2[7];
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",local_164,local_160,iVar14,0);
              if (iVar14 == 0) break;
              iVar14 = param_2[7];
            }
            uVar27 = uVar27 + 1;
            bVar42 = 0xfffffffe < local_164;
            local_164 = (char *)((int)local_164 + 1);
            local_160 = local_160 + (uint)bVar42;
          } while ((int)uVar27 < iVar14);
        }
LAB_001d23a7:
        bVar42 = bVar11 != 2;
        bVar43 = CONCAT11(uStack_17b,local_17c) == 8;
        bVar29 = bVar43 && bVar42;
        if ((!bVar43 || !bVar42) || (bVar42 = bVar29, *param_1 == 0x10)) goto LAB_001d149a;
        iVar14 = AcquireVirtualMemory(uVar16 * 8 + 6,param_2[7] + 2);
        if (iVar14 != 0) {
          puVar21 = (undefined2 *)GetVirtualMemoryBlob(iVar14);
          if (param_2[0xcd1] != -0x54535255) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("image->signature == MagickCoreSignature","coders/bmp.c",0x193,
                          "EncodeImage");
          }
          if (param_2[0xcca] != 0) {
            LogMagickEvent(0x8000,"coders/bmp.c","EncodeImage",0x195,&DAT_002b6e4e,param_2 + 0xc6);
          }
          if (puVar21 == (undefined2 *)0x0) {
                    /* WARNING: Subroutine does not return */
            __assert_fail("compressed_pixels != (unsigned char *) NULL","coders/bmp.c",0x197,
                          "EncodeImage");
          }
          local_164 = (char *)puVar21;
          if (0 < param_2[7]) {
            local_134 = 0;
            iStack_130 = 0;
            iVar19 = 0;
            do {
              iVar39 = 0;
              pcVar46 = local_164;
              if (uVar16 != 0) {
                iVar22 = 1;
                if (1 < uVar17) {
                  do {
                    if (*local_168 == local_168[1]) {
                      iVar22 = 1;
                      pcVar46 = local_168 + 2;
                      do {
                        pcVar38 = pcVar46;
                        iVar22 = iVar22 + 1;
                        iVar40 = iVar39 + iVar22;
                        if (iVar22 == uVar17 - iVar39) {
                          pcVar38 = local_168 + iVar22;
                          break;
                        }
                        if (iVar22 == 0xff) {
                          iVar22 = -1;
                          pcVar38 = local_168 + 0xff;
                          break;
                        }
                        pcVar46 = pcVar38 + 1;
                      } while (*pcVar38 == *local_168);
                      *local_164 = (char)iVar22;
                      pcVar46 = (char *)((int)local_164 + 2);
                      *(char *)((int)local_164 + 1) = *local_168;
                      iVar39 = iVar40;
                      local_168 = pcVar38;
                      if ((int)uVar17 <= iVar40) goto LAB_001d2581;
                    }
                    else {
                      pcVar38 = local_168 + 1;
                      *local_164 = 1;
                      *(char *)((int)local_164 + 1) = *local_168;
                      iVar39 = iVar22;
                    }
                    local_164 = (char *)((int)local_164 + 2);
                    iVar22 = iVar39 + 1;
                    local_168 = pcVar38;
                  } while (iVar22 < (int)uVar17);
                }
                *local_164 = 1;
                pcVar46 = (char *)((int)local_164 + 2);
                *(char *)((int)local_164 + 1) = *local_168;
                local_168 = local_168 + 1;
              }
LAB_001d2581:
              local_164 = (char *)((int)pcVar46 + 2);
              *(undefined2 *)pcVar46 = 0;
              iVar39 = SetImageProgress(param_2,"Save/Image",local_134,iStack_130,param_2[7],0);
              if (iVar39 == 0) break;
              iVar19 = iVar19 + 1;
              bVar42 = 0xfffffffe < local_134;
              local_134 = local_134 + 1;
              iStack_130 = iStack_130 + (uint)bVar42;
            } while (iVar19 < param_2[7]);
          }
          local_164[0] = '\0';
          local_164[1] = '\x01';
          local_a8 = (int)local_164 + (2 - (int)puVar21);
          local_128 = local_a8 + local_c8;
          RelinquishVirtualMemory(local_124);
          local_ac = 1;
          local_124 = iVar14;
          if (param_2[0xcca] == 0) goto LAB_001d14a8;
          goto LAB_001d2640;
        }
        RelinquishVirtualMemory(local_124);
        ThrowMagickException
                  (param_3,"coders/bmp.c","WriteBMPImage",0x88d,400,"MemoryAllocationFailed","`%s\'"
                   ,param_2 + 0xc6);
        piVar5 = (int *)param_1[3];
        while (piVar8 = param_2, piVar5 != (int *)0x0) {
          piVar5 = (int *)piVar8[0xccf];
          param_2 = piVar5;
          piVar35 = piVar8;
        }
        goto LAB_001d3a2a;
      case 0x10:
        local_14c = 0;
        local_104 = 0;
        iStack_100 = 0;
        if (0 < param_2[7]) {
          do {
            iVar19 = GetVirtualPixels(param_2,0,local_14c,param_2[6],1,param_3);
            if (iVar19 == 0) break;
            iVar39 = param_2[7];
            iVar22 = param_2[6];
            puVar20 = (ushort *)(local_168 + ((iVar39 + -1) - local_14c) * uVar17);
            puVar32 = puVar20;
            if (0 < iVar22) {
              iVar40 = param_2[0xa6];
              iVar3 = param_2[0xaa];
              puVar32 = puVar20 + iVar22;
              iVar4 = *(int *)(iVar3 + 8);
              do {
                dVar47 = *(double *)(iVar19 + iVar4 * 8);
                if (iVar14 == 3) {
                  uVar12 = 0xf000;
                  if (*(int *)(iVar3 + 0x34) != 0) {
                    dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);
                    uVar12 = 0;
                    if (0.0 < dVar2) {
                      dVar2 = (dVar2 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                      if (dVar2 < (double)DAT_0029f714) {
                        dVar2 = dVar2 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar2) {
                          local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar2);
                        }
                        uVar12 = (ushort)(local_e4 << 0xc);
                      }
                      else {
                        uVar12 = 0xf000;
                      }
                    }
                  }
                  if (0.0 < dVar47) {
                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= dVar47) {
                      uVar12 = 0xff00;
                    }
                    else {
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar47) {
                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      else {
                        local_e4 = (uint)(longlong)ROUND(dVar47);
                      }
                      uVar12 = uVar12 | (ushort)(local_e4 << 8);
                    }
                  }
                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);
                  if (0.0 < dVar47) {
                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if ((double)DAT_0029f714 <= dVar47) {
                      uVar12 = 0xfff0;
                    }
                    else {
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar47) {
                        local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      else {
                        local_e4 = (uint)(longlong)ROUND(dVar47);
                      }
                      uVar12 = uVar12 | (ushort)(local_e4 << 4);
                    }
                  }
                  dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);
                  if (0.0 < dVar47) {
                    dVar47 = (dVar47 * (double)DAT_002a9b74) / (double)DAT_0029f710;
                    if (dVar47 < (double)DAT_0029f714) {
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if (dVar47 < (double)DAT_0029f134) {
LAB_001d2faa:
                        uVar26 = (ushort)(longlong)ROUND(dVar47);
                      }
                      else {
                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      goto LAB_001d21be;
                    }
LAB_001d2eba:
                    uVar12 = 0xffff;
                  }
                }
                else {
                  uVar12 = 0;
                  if (iVar14 == 2) {
                    if (0.0 < dVar47) {
                      uVar12 = 0xf800;
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if (dVar47 < (double)DAT_0029f714) {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = (ushort)(local_e4 << 0xb);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002cc81c) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) {
                        uVar12 = 0xffe0;
                      }
                      else {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = uVar12 | (ushort)(local_e4 << 5);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if (dVar47 < (double)DAT_0029f714) {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if (dVar47 < (double)DAT_0029f134) goto LAB_001d2faa;
                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        goto LAB_001d21be;
                      }
                      goto LAB_001d2eba;
                    }
                  }
                  else {
                    uVar12 = 0;
                    if ((iVar14 == 4) && (uVar12 = 0x8000, *(int *)(iVar3 + 0x34) != 0)) {
                      dVar2 = *(double *)(iVar19 + *(int *)(iVar3 + 0x38) * 8);
                      uVar12 = 0;
                      if (0.0 < dVar2) {
                        dVar2 = dVar2 / (double)DAT_0029f710;
                        if (dVar2 < (double)DAT_0029f714) {
                          dVar2 = dVar2 + (double)DAT_0029f124;
                          if ((double)DAT_0029f134 <= dVar2) {
                            local_e4 = (uint)(longlong)ROUND(dVar2 - (double)DAT_0029f134);
                          }
                          else {
                            local_e4 = (uint)(longlong)ROUND(dVar2);
                          }
                          uVar12 = (ushort)(local_e4 << 0xf);
                        }
                        else {
                          uVar12 = 0x8000;
                        }
                      }
                    }
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) {
                        uVar12 = 0xfc00;
                      }
                      else {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = uVar12 | (ushort)(local_e4 << 10);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x14) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) {
                        uVar12 = 0xffe0;
                      }
                      else {
                        dVar47 = dVar47 + (double)DAT_0029f124;
                        if ((double)DAT_0029f134 <= dVar47) {
                          local_e4 = (uint)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                        }
                        else {
                          local_e4 = (uint)(longlong)ROUND(dVar47);
                        }
                        uVar12 = uVar12 | (ushort)(local_e4 << 5);
                      }
                    }
                    dVar47 = *(double *)(iVar19 + *(int *)(iVar3 + 0x20) * 8);
                    if (0.0 < dVar47) {
                      dVar47 = (dVar47 * (double)DAT_002c5ed8) / (double)DAT_0029f710;
                      if ((double)DAT_0029f714 <= dVar47) goto LAB_001d2eba;
                      dVar47 = dVar47 + (double)DAT_0029f124;
                      if ((double)DAT_0029f134 <= dVar47) {
                        uVar26 = (ushort)(longlong)ROUND(dVar47 - (double)DAT_0029f134);
                      }
                      else {
                        uVar26 = (ushort)(longlong)ROUND(dVar47);
                      }
LAB_001d21be:
                      uVar12 = uVar12 | uVar26;
                    }
                  }
                }
                *puVar20 = uVar12;
                iVar19 = iVar19 + iVar40 * 8;
                puVar20 = puVar20 + 1;
              } while (puVar20 != puVar32);
            }
            if (uVar17 != iVar22 * 2 &&
                SBORROW4(uVar17,iVar22 * 2) == (int)(uVar17 + iVar22 * -2) < 0) {
              puVar20 = puVar32;
              do {
                puVar33 = (ushort *)((int)puVar20 + 1);
                *(char *)puVar20 = '\0';
                puVar20 = puVar33;
              } while (puVar33 != puVar32 + (uVar16 * 2 - iVar22));
              iVar39 = param_2[7];
            }
            if (param_2[0xccf] == 0) {
              iVar19 = SetImageProgress(param_2,"Save/Image",local_104,iStack_100,iVar39,0);
              if (iVar19 == 0) break;
              iVar39 = param_2[7];
            }
            local_14c = local_14c + 1;
            bVar42 = 0xfffffffe < local_104;
            local_104 = local_104 + 1;
            iStack_100 = iStack_100 + (uint)bVar42;
          } while ((int)local_14c < iVar39);
          bVar42 = bVar11 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x18:
        uVar16 = 0;
        local_184._0_4_ = 0;
        local_184._4_4_ = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,uVar16,param_2[6],1,param_3);
            if (iVar14 == 0) goto LAB_001d1490;
            iVar19 = param_2[6];
            pcVar46 = local_168 + (~uVar16 + param_2[7]) * uVar17;
            if (0 < iVar19) {
              iVar39 = 0;
              pcVar38 = pcVar46;
              do {
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                *pcVar38 = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                pcVar46 = pcVar38 + 3;
                pcVar38[1] = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                iVar39 = iVar39 + 1;
                pcVar38[2] = cVar24;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                iVar19 = param_2[6];
                pcVar38 = pcVar46;
              } while (iVar39 < iVar19);
            }
            if (iVar19 * 3 < (int)uVar17) {
              pcVar38 = pcVar46;
              do {
                pcVar30 = pcVar38 + 1;
                *pcVar38 = '\0';
                pcVar38 = pcVar30;
              } while (pcVar30 != pcVar46 + uVar17 + iVar19 * -3);
            }
            iVar14 = param_2[7];
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",(uint)local_184,local_184._4_4_,iVar14,
                                        0);
              if (iVar14 == 0) goto LAB_001d1490;
              iVar14 = param_2[7];
            }
            uVar16 = uVar16 + 1;
            bVar42 = 0xfffffffe < (uint)local_184;
            local_184._0_4_ = (uint)local_184 + 1;
            local_184._4_4_ = local_184._4_4_ + (uint)bVar42;
          } while ((int)uVar16 < iVar14);
          bVar42 = bVar11 != 2;
          goto LAB_001d149a;
        }
        break;
      case 0x20:
        local_17c = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        iStack_178 = 0;
        local_184._0_4_ = 0;
        if (0 < param_2[7]) {
          do {
            iVar14 = GetVirtualPixels(param_2,0,(uint)local_184,param_2[6],1,param_3);
            if (iVar14 == 0) break;
            iVar19 = param_2[7];
            if (0 < param_2[6]) {
              iVar39 = 0;
              pcVar46 = local_168 + ((iVar19 + -1) - (uint)local_184) * uVar17;
              do {
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x20) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                *pcVar46 = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x14) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                pcVar46[1] = cVar24;
                dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 8) * 8);
                cVar24 = '\0';
                if (0.0 < dVar47) {
                  dVar47 = dVar47 / (double)DAT_002a7ff0;
                  cVar24 = -1;
                  if (dVar47 < (double)DAT_002a7ff4) {
                    cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                  }
                }
                pcVar46[2] = cVar24;
                cVar24 = -1;
                if (*(int *)(param_2[0xaa] + 0x34) != 0) {
                  dVar47 = *(double *)(iVar14 + *(int *)(param_2[0xaa] + 0x38) * 8);
                  cVar24 = '\0';
                  if (0.0 < dVar47) {
                    dVar47 = dVar47 / (double)DAT_002a7ff0;
                    if ((double)DAT_002a7ff4 <= dVar47) {
                      cVar24 = -1;
                    }
                    else {
                      cVar24 = (char)(short)ROUND(dVar47 + (double)DAT_0029f124);
                    }
                  }
                }
                pcVar46[3] = cVar24;
                iVar39 = iVar39 + 1;
                iVar14 = iVar14 + param_2[0xa6] * 8;
                pcVar46 = pcVar46 + 4;
              } while (iVar39 < param_2[6]);
              iVar19 = param_2[7];
            }
            if (param_2[0xccf] == 0) {
              iVar14 = SetImageProgress(param_2,"Save/Image",
                                        CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)),
                                        iStack_178,iVar19,0);
              if (iVar14 == 0) break;
              iVar19 = param_2[7];
            }
            local_184._0_4_ = (uint)local_184 + 1;
            uVar16 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c));
            iVar14 = CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + 1;
            local_17c = (byte)iVar14;
            uStack_17b = (undefined1)((uint)iVar14 >> 8);
            uStack_17a = (undefined2)((uint)iVar14 >> 0x10);
            iStack_178 = iStack_178 + (uint)(0xfffffffe < uVar16);
          } while ((int)(uint)local_184 < iVar19);
        }
      }
LAB_001d1490:
      bVar42 = bVar11 != 2;
LAB_001d149a:
      bVar29 = bVar42;
      if (param_2[0xcca] == 0) {
LAB_001d14a8:
        if (iVar13 == 0) goto LAB_001d279e;
LAB_001d14b4:
        local_164 = (char *)(local_128 + -0xe);
        uVar16 = GetStringInfoLength(iVar13);
        local_17c = (byte)uVar16;
        uStack_17b = (undefined1)(uVar16 >> 8);
        uStack_17a = (undefined2)(uVar16 >> 0x10);
        uVar17 = uVar16 & 3;
        if (uVar17 == 0) {
          local_174 = 0;
          local_170 = 0;
        }
        else {
          local_174 = 4 - uVar17;
          local_170 = -(uint)(4 < uVar17);
        }
        local_128 = uVar16 + local_128 + local_174;
      }
      else {
LAB_001d2640:
        dVar47 = (double)bVar11;
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x89e,
                       "   Writing BMP version %.20g datastream",dVar47);
        if (*param_2 == 1) {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a1,"   Storage class=DirectClass",
                         dVar47);
        }
        else {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a4,"   Storage class=PseudoClass",
                         dVar47);
        }
        dVar47 = (double)(uint)param_2[8];
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a6,"   Image depth=%.20g",dVar47);
        if (param_2[0xa5] == 0) {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ac,"   Matte=MagickFalse",dVar47);
        }
        else {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8a9,"   Matte=True",dVar47);
        }
        dVar47 = (double)uVar7;
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x8ae,"   BMP bits_per_pixel=%.20g",
                       dVar47);
        if (local_ac == 1) {
          pcVar46 = "   Compression=BI_RLE8";
          uVar45 = 0x8ba;
        }
        else if (local_ac == 0) {
          pcVar46 = "   Compression=BI_RGB";
          uVar45 = 0x8b4;
        }
        else if (local_ac == 3) {
          pcVar46 = "   Compression=BI_BITFIELDS";
          uVar45 = 0x8c0;
        }
        else {
          dVar47 = (double)(ulonglong)local_ac;
          pcVar46 = "   Compression=UNKNOWN (%u)";
          uVar45 = 0x8c6;
        }
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);
        if (local_144 == 0) {
          pcVar46 = "   Number_colors=unspecified";
          uVar45 = 0x8cc;
        }
        else {
          pcVar46 = "   Number_colors=%u";
          dVar47 = (double)(ulonglong)local_144;
          uVar45 = 0x8cf;
        }
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",uVar45,pcVar46,dVar47);
        if (iVar13 != 0) goto LAB_001d14b4;
LAB_001d279e:
        local_174 = 0;
        local_170 = 0;
        local_17c = 0;
        uStack_17b = 0;
        uStack_17a = 0;
        local_164 = (char *)0x0;
      }
      WriteBlob(param_2,2);
      WriteBlobLSBLong(param_2,local_128);
      WriteBlobLSBLong(param_2,0);
      WriteBlobLSBLong(param_2,local_c0);
      if (bVar11 == 2) {
        WriteBlobLSBLong(param_2,local_bc);
        local_120 = (short)iVar18;
        WriteBlobLSBSignedShort(param_2,(int)local_120);
        local_11c = (short)iVar28;
        WriteBlobLSBSignedShort(param_2,(int)local_11c);
        WriteBlobLSBShort(param_2,1);
        WriteBlobLSBShort(param_2,uVar7);
        iVar18 = *param_2;
        iVar14 = param_2[0xcca];
      }
      else {
        WriteBlobLSBLong(param_2,local_bc);
        WriteBlobLSBSignedLong(param_2,iVar18);
        WriteBlobLSBSignedLong(param_2,iVar28);
        WriteBlobLSBShort(param_2,1);
        WriteBlobLSBShort(param_2,uVar7);
        WriteBlobLSBLong(param_2,local_ac);
        WriteBlobLSBLong(param_2,local_a8);
        WriteBlobLSBLong(param_2,local_a4);
        WriteBlobLSBLong(param_2,local_a0);
        WriteBlobLSBLong(param_2,local_144);
        WriteBlobLSBLong(param_2,local_144);
        if ((bVar11 == 4) && (bVar6 || param_2[0xa5] != 0)) {
          WriteBlobLSBLong(param_2,local_98);
          WriteBlobLSBLong(param_2,local_94);
          WriteBlobLSBLong(param_2,local_90);
          WriteBlobLSBLong(param_2,local_8c);
          if (iVar13 == 0) {
            WriteBlobLSBLong(param_2,0x73524742);
          }
          else {
            WriteBlobLSBLong(param_2,0x4d424544);
          }
          dVar47 = *(double *)(param_2 + 0x5d);
          if ((1.0 < dVar47) || (dVar47 <= 0.0)) {
            local_e4 = 0;
            param_2[0x5d] = 0;
            param_2[0x5e] = 0;
          }
          else {
            local_e4 = (uint)(longlong)ROUND(dVar47 * (double)DAT_002cc820);
          }
          if ((1.0 < *(double *)(param_2 + 0x5f)) || (*(double *)(param_2 + 0x5f) <= 0.0)) {
            param_2[0x5f] = 0;
            param_2[0x60] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 99)) || (*(double *)(param_2 + 99) <= 0.0)) {
            param_2[99] = 0;
            param_2[100] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 0x65)) || (*(double *)(param_2 + 0x65) <= 0.0)) {
            param_2[0x65] = 0;
            param_2[0x66] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 0x69)) || (*(double *)(param_2 + 0x69) <= 0.0)) {
            param_2[0x69] = 0;
            param_2[0x6a] = 0;
          }
          if ((1.0 < *(double *)(param_2 + 0x6b)) || (*(double *)(param_2 + 0x6b) <= 0.0)) {
            param_2[0x6b] = 0;
            param_2[0x6c] = 0;
          }
          if ((1.0 < local_38) || (local_38 <= 0.0)) {
            local_38 = 0.0;
          }
          dVar47 = local_38;
          if ((1.0 < local_30) || (local_30 <= 0.0)) {
            local_30 = 0.0;
          }
          dVar2 = local_30;
          if ((1.0 < local_28) || (local_28 <= 0.0)) {
            local_28 = 0.0;
          }
          dVar9 = local_28;
          WriteBlobLSBLong(param_2,local_e4);
          dVar1 = (double)DAT_002cc820;
          local_e4 = (uint)(longlong)ROUND((float)*(double *)(param_2 + 0x5f) * DAT_002cc820);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - (*(double *)(param_2 + 0x5d) + *(double *)(param_2 + 0x5f)))
                                 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 99));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x65));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - (*(double *)(param_2 + 99) + *(double *)(param_2 + 0x65))) *
                                 dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x69));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar1 * *(double *)(param_2 + 0x6b));
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)
                           ROUND((1.0 - (*(double *)(param_2 + 0x69) + *(double *)(param_2 + 0x6b)))
                                 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          dVar1 = (double)DAT_002b2420;
          local_e4 = (uint)(longlong)ROUND((float)dVar47 * DAT_002b2420);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar2 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          local_e4 = (uint)(longlong)ROUND(dVar9 * dVar1);
          WriteBlobLSBLong(param_2,local_e4);
          if ((param_2[0x75] != 0) || (bVar41)) {
            uVar16 = param_2[0x75] - 1;
            uVar45 = 0;
            if (uVar16 < 4) {
              uVar45 = *(undefined4 *)(&DAT_002cc784 + uVar16 * 4);
            }
            WriteBlobLSBLong(param_2,uVar45);
            WriteBlobLSBLong(param_2,local_164);
            WriteBlobLSBLong(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) + local_174
                            );
            WriteBlobLSBLong(param_2,0);
          }
        }
        iVar18 = *param_2;
        iVar14 = param_2[0xcca];
      }
      if (iVar18 == 2) {
        if (iVar14 != 0) {
          local_184 = (ulonglong)(uint)param_2[9];
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x976,"  Colormap: %.20g entries",
                         (double)local_184);
        }
        bVar25 = (byte)local_ae;
        iVar14 = 1 << (bVar25 & 0x1f);
        puVar21 = (undefined2 *)AcquireQuantumMemory(iVar14,4);
        if (puVar21 == (undefined2 *)0x0) {
          RelinquishVirtualMemory(local_124);
          ThrowMagickException
                    (param_3,"coders/bmp.c","WriteBMPImage",0x97d,400,"MemoryAllocationFailed",
                     "`%s\'",param_2 + 0xc6);
          piVar5 = (int *)param_1[3];
          while (piVar8 = param_2, piVar5 != (int *)0x0) {
            piVar5 = (int *)piVar8[0xccf];
            param_2 = piVar5;
            piVar35 = piVar8;
          }
LAB_001d3a2a:
          CloseBlob(piVar35);
          iVar13 = 0;
          goto LAB_001d3a3a;
        }
        uVar16 = local_9c;
        if (param_2[9] <= (int)local_9c) {
          uVar16 = param_2[9];
        }
        puVar23 = puVar21;
        if ((int)uVar16 < 1) {
          iVar18 = 0;
        }
        else {
          iVar28 = 0;
          iVar18 = 0;
          do {
            dVar47 = *(double *)(param_2[10] + 0x30 + iVar28);
            uVar31 = 0;
            if (0.0 < dVar47) {
              dVar47 = dVar47 / (double)DAT_002a7ff0;
              uVar31 = 0xff;
              if (dVar47 < (double)DAT_002a7ff4) {
                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)puVar23 = uVar31;
            dVar47 = *(double *)(param_2[10] + 0x28 + iVar28);
            uVar31 = 0;
            if (0.0 < dVar47) {
              dVar47 = dVar47 / (double)DAT_002a7ff0;
              uVar31 = 0xff;
              if (dVar47 < (double)DAT_002a7ff4) {
                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)((int)puVar23 + 1) = uVar31;
            dVar47 = *(double *)(param_2[10] + 0x20 + iVar28);
            uVar31 = 0;
            if (0.0 < dVar47) {
              dVar47 = dVar47 / (double)DAT_002a7ff0;
              uVar31 = 0xff;
              if (dVar47 < (double)DAT_002a7ff4) {
                uVar31 = (undefined1)(short)ROUND(dVar47 + (double)DAT_0029f124);
              }
            }
            *(undefined1 *)(puVar23 + 1) = uVar31;
            if (bVar29) {
              *(undefined1 *)((int)puVar23 + 3) = 0;
              puVar23 = puVar23 + 2;
            }
            else {
              puVar23 = (undefined2 *)((int)puVar23 + 3);
            }
            iVar18 = iVar18 + 1;
            iVar28 = iVar28 + 0x50;
            uVar16 = local_9c;
            if (param_2[9] <= (int)local_9c) {
              uVar16 = param_2[9];
            }
          } while (iVar18 < (int)uVar16);
        }
        if (iVar18 < iVar14) {
          do {
            while( true ) {
              *(undefined1 *)(puVar23 + 1) = 0;
              *puVar23 = 0;
              if (!bVar29) break;
              iVar18 = iVar18 + 1;
              *(undefined1 *)((int)puVar23 + 3) = 0;
              puVar23 = puVar23 + 2;
              if (iVar18 == iVar14) goto LAB_001d3985;
            }
            iVar18 = iVar18 + 1;
            puVar23 = (undefined2 *)((int)puVar23 + 3);
          } while (iVar18 != iVar14);
        }
LAB_001d3985:
        if (bVar11 == 2) {
          iVar14 = 3;
        }
        else {
          iVar14 = 4;
        }
        WriteBlob(param_2,iVar14 << (bVar25 & 0x1f));
        RelinquishMagickMemory(puVar21);
        iVar14 = param_2[0xcca];
      }
      sVar37 = local_a8;
      if (iVar14 != 0) {
        LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x999,"  Pixels:  %u bytes",local_a8);
      }
      WriteBlob(param_2,sVar37);
      if (iVar13 != 0) {
        if (param_2[0xcca] != 0) {
          LogMagickEvent(0x10,"coders/bmp.c","WriteBMPImage",0x99f,"  Profile:  %g bytes",
                         (double)CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)) +
                         (double)(short)local_174);
        }
        GetStringInfoDatum(iVar13);
        WriteBlob(param_2,CONCAT22(uStack_17a,CONCAT11(uStack_17b,local_17c)));
        if (local_170 != 0 || local_174 != 0) {
          WriteBlob(param_2,local_174);
        }
      }
      RelinquishVirtualMemory(local_124);
      iVar13 = GetNextImageInList(param_2);
      if (iVar13 == 0) {
LAB_001d3caf:
        CloseBlob(param_2);
        iVar13 = 1;
        goto LAB_001d3a3a;
      }
      param_2 = (int *)SyncNextImageInList(param_2);
      uVar17 = local_10c + 1;
      iVar14 = local_108 + (uint)(0xfffffffe < local_10c);
      iVar13 = SetImageProgress(param_2,"Save/Images",local_10c,local_108,uVar15,0);
      if ((iVar13 == 0) || (param_1[3] == 0)) goto LAB_001d3caf;
      uVar16 = param_2[1] - 3;
      local_10c = uVar17;
      local_108 = iVar14;
      if (0x1e < uVar16) break;
LAB_001d1cae:
    } while ((0x403c0001U >> (uVar16 & 0x1f) & 1) != 0);
  } while( true );
}

